特定列相等时所有行的总和-R中的data.frame

特定列相等时所有行的总和-R中的data.frame,r,list,dataframe,if-statement,R,List,Dataframe,If Statement,我的真实列表包含大量的数据。具有大量行和列的帧。 谢谢代码很好,只需将其放入函数并使用lappy。这里我使用了data.table,但您也可以将该dplyr代码放入函数中,并将其用作lappy的第二个参数 df var1 var2 var3 1 a 4 12.5 2 b 2 5 4 c 6 0 5 d 88 0 df2 var1 var2 var3 1 k 10 12.5 2 l 0.6 5 3 v

我的真实列表包含大量的
数据。具有大量行和列的帧。

谢谢

代码很好,只需将其放入函数并使用
lappy
。这里我使用了data.table,但您也可以将该dplyr代码放入函数中,并将其用作
lappy
的第二个参数

df
  var1 var2  var3
1    a    4  12.5
2    b    2  5
4    c    6  0
5    d   88  0

df2
  var1 var2  var3
1  k    10    12.5
2  l    0.6  5
3  v   12    0

代码很好,只需将其放入函数中并使用
lappy
。这里我使用了data.table,但您也可以将该dplyr代码放入函数中,并将其用作
lappy
的第二个参数

df
  var1 var2  var3
1    a    4  12.5
2    b    2  5
4    c    6  0
5    d   88  0

df2
  var1 var2  var3
1  k    10    12.5
2  l    0.6  5
3  v   12    0
在base中,您可以使用
lappy
中的
aggregate
对每组进行汇总

library(data.table)
lapply(mylist, function(df) setDT(df)[, lapply(.SD, sum), var1])
或者使用
rowsum
,在行名称中使用组:

lapply(list, function(x) aggregate(.~var1, x, sum))
#lapply(list, function(x) aggregate(x[,-1], as.list(x[1]), sum)) #Alternative
#[[1]]
#  var1 var2 var3
#1    a    4 12.5
#2    b    2  5.0
#3    c    6  0.0
#4    d   88  0.0
#
#[[2]]
#  var1 var2 var3
#1    k 10.0 12.5
#2    l  0.6  5.0
#3    v 12.0  0.0
在base中,您可以使用
lappy
中的
aggregate
对每组进行汇总

library(data.table)
lapply(mylist, function(df) setDT(df)[, lapply(.SD, sum), var1])
或者使用
rowsum
,在行名称中使用组:

lapply(list, function(x) aggregate(.~var1, x, sum))
#lapply(list, function(x) aggregate(x[,-1], as.list(x[1]), sum)) #Alternative
#[[1]]
#  var1 var2 var3
#1    a    4 12.5
#2    b    2  5.0
#3    c    6  0.0
#4    d   88  0.0
#
#[[2]]
#  var1 var2 var3
#1    k 10.0 12.5
#2    l  0.6  5.0
#3    v 12.0  0.0
整洁版本:

lapply(list, function(x) rowsum(x[,-1], x[,1]))
dfTidy版本:

lapply(list, function(x) rowsum(x[,-1], x[,1]))

df使用
dplyr 1.0.0
你可以使用
cross()
总结(横跨(num_range(“var”,2:3),sum),.groups=“drop_last”)
使用
dplyr 1.0.0
你可以使用
cross()
总结(横跨(num_range(“var”,2:3),sum),.groups=“drop_last”)