Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
dplyr和for在r中循环_R_For Loop_Dplyr - Fatal编程技术网

dplyr和for在r中循环

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列)

问题是:我想在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列)%>%
总结(平均值=平均值(所有列[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)