如何从 R 中的 table() 函数获取唯一值

How to get unique values from table() function in R

我有一个包含 31 列的数据框。在年份列(名为 "Anos")中,我有重复年份的行,当我使用 table(df$Anos) 时,我得到年份的频率。 我只需要有 12 次观察的年份(12 个月)

示例:

freq_years <- table(df$Anos) freq_years Result: 2009 2010 2011 2012 2013 2014 2015 2017 2018 2019 2020 10 12 12 3 11 6 8 12 12 12 5

如何在 freq = 12 的年份自动获取新变量? (也许像 2010,2011,2018,2019)

我们可以创建一个逻辑向量并对 table 输出

names 进行子集化
names(freq_years)[freq_years == 12]

这里是 tidyverse 版本。根据您对数据框中其他 30 列的使用,将数据保留为 df2 可能会有用。

install.packages("dplyr")
install.packages("magrittr")
library("magrittr")
library("dplyr")
#create example dataset
df <- data.frame("Anos" = c(rep(2009,10),
                            rep(2010,12),
                            rep(2011,12),
                            rep(2012,3),
                            rep(2013,11),
                            rep(2014,6),
                            rep(2015,8),
                            rep(2016,12),
                            rep(2017,12)))

head(df)

# count number of years by row and filter to those with only 12 
df2 <- df %>% group_by(Anos) %>% count() %>% filter(n == 12)

head(df2)

# create variable with list of years that have exactly 12 rows
variable <- df2$Anos

variable