yearmon类:删除不包含给定年份所有月份的记录
我在R中有一个数据框,包括城市名称、年份和月份。如下所示:yearmon类:删除不包含给定年份所有月份的记录,r,date,dataframe,zoo,R,Date,Dataframe,Zoo,我在R中有一个数据框,包括城市名称、年份和月份。如下所示: df %>% filter(City == "Toronto") %>% group_by(Year) %>% filter(length(unique(Month)) == 12) 此表继续显示数千条记录。一些城市没有一年中每个月的数据(例如,上例中洛杉矶1920年的数据仅包含一月和二月),这意味着它们是不完整的。我只想提取给定城市的完整年份(例如,包含该年的所有12个月,如上述示例中的多伦多)
df %>%
filter(City == "Toronto") %>%
group_by(Year) %>%
filter(length(unique(Month)) == 12)
此表继续显示数千条记录。一些城市没有一年中每个月的数据(例如,上例中洛杉矶1920年的数据仅包含一月和二月),这意味着它们是不完整的。我只想提取给定城市的完整年份(例如,包含该年的所有12个月,如上述示例中的多伦多)
我已经尝试将它转换为zoo::yearmon类,但我不知道如何操纵它来实现上面所述的功能。我相信可以编写一个脚本,查看年份和城市名称,检查它是否包含所有12个月,然后省略不包含的年份。以下是使用
dplyr
包的解决方案:
df %>%
group_by(City, Year) %>%
filter(length(unique(Month)) == 12)
我按城市
和年份
分组,然后筛选出具有12个唯一月份的。(我假设您的数据帧被称为df
)
现在,如果你只想要一个特定的城市,比如多伦多,你可以使用以下方法:
df %>%
filter(City == "Toronto") %>%
group_by(Year) %>%
filter(length(unique(Month)) == 12)
这里有一个使用
数据的选项。表
library(data.table)
setDT(df)[, .SD[uniqueN(Month)==12], .(City, Year)]
请使用
dput()
共享您的数据。我们是否可以假设,对于城市
+年
,月
不会发生多次?例如,只有一个1922年1月在多伦多?这对我来说很有用!非常感谢您抽出时间回答!这也起了作用。感谢您抽出时间回答!但我不确定哪种方法更好。