拥有包含A B C D E
创建了这样的fun1函数来汇总数据
fun1 <- function(x){c(len=length(x), min=min(x), max=max(x))}
当我对特定列进行总结时,它可以正常工作
summaryBy(A ~ B, data=data1, FUN=fun1 , keep.names=TRUE)
但是,如何在fun1
添加额外功能,例如sum(C)
(与x无关),并在summaryBy
中使用它来获取groupBy的相关结果乙
例如,
A B C D E
1 2 3 4 5
1 2 4 5 7
1 3 5 7 8
需要按B分组(相对于A),因此将获得两组(2,3)。
但sum(c) will
与A无关。
结果应该是
B len min max sum(c)
2 2 1 1 7
3 1 1 1 5
答案 0 :(得分:1)
试试这个:
summaryBy(A + C ~ B, data = data1, FUN = c(length, min, max, sum))[c(-3, -5, -7, -8)]
,并提供:
B A.length A.min A.max C.sum
1 2 2 1 1 7
2 3 1 1 1 5
summaryBy
可能不适合该问题。使用sqldf可以这样写:
library(sqldf)
sqldf("select B, count(A) len, min(A) min, max(A) max, sum(C) sum from data1 group by B")
,并提供:
B len min max sum
1 2 2 1 1 7
2 3 1 1 1 5
注意:在上面的例子中我们使用了
data1 <- structure(list(A = c(1L, 1L, 1L), B = c(2L, 2L, 3L), C = 3:5,
D = c(4L, 5L, 7L), E = c(5L, 7L, 8L)), .Names = c("A", "B",
"C", "D", "E"), class = "data.frame", row.names = c(NA, -3L))