dplyr和for在r中循环
问题是:我想在R代码中使用for循环来总结不同的列 例如,下面是它的外观:dplyr和for在r中循环,r,for-loop,dplyr,R,For Loop,Dplyr,问题是:我想在R代码中使用for循环来总结不同的列 例如,下面是它的外观: all.columns<-c("column4","column5","column6","column7") for (i in 1:4) { df%>% group_by(column3)%>% summarise(Mean=mean(all.columns[i]), Max=max(all.columns[i])) } all.columns% 分组依据(第3列)
all.columns<-c("column4","column5","column6","column7")
for (i in 1:4) {
df%>%
group_by(column3)%>%
summarise(Mean=mean(all.columns[i]),
Max=max(all.columns[i]))
}
all.columns%
分组依据(第3列)%>%
总结(平均值=平均值(所有列[i]),
Max=Max(所有列[i]))
}
其中df是一个数据帧,column3可以是一个group by Year变量,而column 5到7是我想用相同代码反复检查的变量
您知道如何使用dplyr执行此操作吗?如果你有一个没有dplyr的替代方案,我想听听
我试图输入列的字符名,但它不起作用…这不起作用,因为当您将列名存储为字符时,您调用列名就像调用对象一样 我知道这可以通过
数据来完成。表:
dt = data.table(df)
dt[, lapply(.SD, function(x) data.table(mean(x), max(x))),
by = column3, .SDcols = all.columns]
这个怎么样:
伪造数据:
df <- data.frame(column3=rep(letters[1:2], 10),
column4=rnorm(20),
column5=rnorm(20),
column6=rnorm(20),
column7=rnorm(20))
输出:
Source: local data frame [2 x 9]
column3 column4_mean column5_mean column6_mean column7_mean column4_max column5_max
1 a 0.186458 0.02662053 -0.00874544 0.3327999 1.563171 2.416697
2 b 0.336329 -0.08868817 0.31777871 0.1934266 1.263437 1.142430
Variables not shown: column6_max (dbl), column7_max (dbl)
可能会在末尾添加一个%%>%print
。我不太清楚你想做什么。示例数据可能会有所帮助。请添加一些与您心目中的结构相匹配的示例数据,以及理想情况下所需输出的说明。实际上,我无法判断分组变量是否跨行重复,是否必须处理缺少的值,等等。您希望的输出是什么?是否需要对象,每个列的摘要一个数据框?使用字符串列名,您需要使用标准的。。。有。或者可以查看每个
的摘要,然后在没有任何循环的情况下为自己创建一个大摘要数据帧。谢谢Gregor,这正是最简单的方法!总结每个(funs(平均值,最大值),第4、5、6栏)这真是太棒了!谢谢正是我要找的!
Source: local data frame [2 x 9]
column3 column4_mean column5_mean column6_mean column7_mean column4_max column5_max
1 a 0.186458 0.02662053 -0.00874544 0.3327999 1.563171 2.416697
2 b 0.336329 -0.08868817 0.31777871 0.1934266 1.263437 1.142430
Variables not shown: column6_max (dbl), column7_max (dbl)