我想总结这个数据框中除了一个数字列之外的所有内容。
Group, Registered, Votes, Beans
A, 111, 12, 100
A, 111, 13, 200
A, 111, 14, 300
我想通过
Group
对其进行分组,总结除 Registered
之外的所有列。summarise_if(
.tbl = group_by(
.data = x,
Precinct
),
.predicate = is.numeric,
.funs = sum
)
这里的问题是结果是一个数据框,它汇总了所有数字列,包括
Registered
。除了 Registered
之外,我如何总结所有内容?我想要的输出看起来像这样
Group, Registered, Votes, Beans
A, 111, 39, 600
最佳答案
我会使用 summarise_at
,并且只为非数字列创建一个逻辑向量,它是 FALSE
,否则为 Registered
和 TRUE
,即
df %>%
summarise_at(which(sapply(df, is.numeric) & names(df) != 'Registered'), sum)
如果你只想总结除一列之外的所有内容,你可以这样做
df %>%
summarise_at(vars(-Registered), sum)
但在这种情况下,您还必须检查它是否也是数字。
笔记:
sapply(df, is.numeric)
替换为 sapply(df, function(x) is.numeric(x) & !is.factor(x))
sapply(df[1,], is.numeric)
而不是 sapply(df, is.numeric)
会更快。 (如果我错了,请有人纠正我)关于r - 我如何总结除我指定的列之外的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522657/