拆分成列表后访问数据

时间:2016-09-14 17:57:55

标签: r csv dataframe

我认为这是一个非常初学的问题,但是尽管尝试了很多解决方案,但搜索网络(以及搜索引擎优化)并没有让我找到答案。这就是问题所在:

我有一个包含许多列的csv数据集,例如:yearID X Y Z.我在使用时阅读了这个:data<-read.csv("/foo/bar.csv") 从那里,我使用X Y和Z来计算每行的A:data$A<-(X+Y)/Z

现在我想绘制每年的平均A,所以我做:list_df <- split(data, data$yearID)。万岁,我可以看到如果我做总结(list_df [[5]])我会看到第五年X Y Z和A的摘要。

这是我被困的地方,然后我尝试做类似的事情:

for(year in list_df){
xy<-data.frame(mean(year$yearID, na.rm=T), mean(year$A, na.rm=T))
}

这个循环&#34;工作&#34; (它不会引发错误),但xy中出现的仅仅是去年和当年的平均值A.理想情况下,我想最终绘制&#34; Avg A vs YearID。&#34;我已经根据我发现的其他代码示例尝试了for循环中的一些排列,但没有一个给我一个有效的解决方案。我非常欢迎这个过程的任何部分,因为我刚开始学习R。

干杯, 扎克

1 个答案:

答案 0 :(得分:1)

除非您因其他原因需要拆分列表,否则可以使用aggregate

data <- data.frame(yearId=rep(2010:2014,each=2),X=runif(10,1,100),Y=runif(10,50,150),Z=runif(10,100,200))
data$A <- (data$X+data$Y)/data$Z

data2 <- aggregate(A~yearId,data,mean)
plot(data2$yearId,data2$A)