我有一个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)
这里是一个 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
我们可以创建一个逻辑向量,并将其子集为 names
的 table
产出
names(freq_years)[freq_years == 12]