我在R中有一个包含城市名称,年份和月份的数据框。它看起来如下:
Sample data set with Month, Year, and City columns
此表继续有数千条记录。一些城市没有一年中每个月的数据(例如,上述示例中的洛杉矶的1920年数据仅包含1月和2月),这意味着它们不完整。我想只提取那些特定城市完成的年份(例如,包含该年度的所有12个月,如上例中的多伦多)。
我试过将它转换成zoo :: yearmon类,但我不知道如何操作它来做我上面描述的。我相信可以编写一个脚本来查看年份和城市名称,检查它是否包含所有12个月,然后省略不存在的年份。
答案 0 :(得分:2)
以下是使用dplyr
包的解决方案:
df %>%
group_by(City, Year) %>%
filter(length(unique(Month)) == 12)
我按City
和Year
分组,然后过滤那些有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)]