Zoo :: yearmon类:删除不包含给定年份所有月份的记录

时间:2018-04-03 00:00:23

标签: r date dataframe zoo

我在R中有一个包含城市名称,年份和月份的数据框。它看起来如下:

Sample data set with Month, Year, and City columns

此表继续有数千条记录。一些城市没有一年中每个月的数据(例如,上述示例中的洛杉矶的1920年数据仅包含1月和2月),这意味着它们不完整。我想只提取那些特定城市完成的年份(例如,包含该年度的所有12个月,如上例中的多伦多)。

我试过将它转换成zoo :: yearmon类,但我不知道如何操作它来做我上面描述的。我相信可以编写一个脚本来查看年份和城市名称,检查它是否包含所有12个月,然后省略不存在的年份。

2 个答案:

答案 0 :(得分:2)

以下是使用dplyr包的解决方案:

df %>% 
  group_by(City, Year) %>% 
  filter(length(unique(Month)) == 12)

我按CityYear分组,然后过滤那些有12个独特月份的人。 (我假设您的数据框称为df。)

现在,如果您只想要一个特定的城市,比如多伦多,您可以使用以下内容:

df %>% 
  filter(City == "Toronto") %>%
  group_by(Year) %>% 
  filter(length(unique(Month)) == 12)

答案 1 :(得分:0)

以下是使用data.table

的选项
library(data.table)
setDT(df)[, .SD[uniqueN(Month)==12], .(City, Year)]