0
我有一个包含多年观测数据的天气数据集。我想要做的是创建某种循环,这将允许我将我的原始数据集一般地划分为给定年份的子数据集。使用dplyr迭代子设置数据帧?
让我们调用我的数据集Weather_Data。下面是一些简单的示例数据:
Weather_Data
Year GPS_Coord
2012 x1
2012 x2
2013 x3
2013 x4
2014 x5
2014 x6
2015 x7
2015 x8
在试图建立某种形式的循环,我开始与一段代码,例如这样的:
Weather_Data_2012<-Weather_Data%>%filter(Year=="2012")
此代码工作正常。当试图然而,建立某种形式的循环,我试着做这样的事情:
Year_list<-list()
Year_sub<-as.character(c(2012:2015))
for (i in 1:length(Year_sub)){
Year_list[[i]]<-Weather_Data%>%filter(Year=="i")
}
当我执行这个代码,我结束了这样的输出:
A tibble: 0 × 11
因此,很明显的循环没有按预期工作!
这里想什么,我通过这个代码来完成:
Year_list[[1]]
Year GPS_Coord
2012 x1
2012 x2
Year_list[[2]]
Year GPS_Coord
2013 x3
2013 x4
Year_list[[3]]
Year GPS_Coord
2014 x5
2014 x6
Year_list[[4]]
Year GPS_Coord
2015 x7
2015 x8
任何提示吗?谢谢。
你需要做的'== Year_sub [我]而不是'==“我”'访问你年份列表'Year_sub'的元素'i'。 – Lamia
你确定你需要创建一个这样的列表吗?我怀疑'group_by(Year)'可能会更简单地达到相同的结果,这是对'dplyr'中每个子集执行分析的标准方法。 – Marius
我同意Marius--这是毫无意义的,因为你已经使用了dplyr并且它具有'group_by'功能。另外,'split(Weather_Data,Weather_Data $ Year)'会给你你想要的结果,根本没有包。 – thelatemail