【发布时间】:2019-05-29 15:30:41
【问题描述】:
我有一个需要由 B 列汇总到一个数据框中的数据框。我还需要按 A 列将此数据框汇总到另一个数据框中。出于上下文的考虑,B 列是层次结构中 A 列的子列。我也只需要列 C:E,所以我认为 dplyr 是最有帮助的。
A | B | C | D | E | F | G
-------------------------------------
1 1A 3 4 5 3 2
1 1B 4 4 4 4 3
2 2A 2 2 2 2 2
...
我的团队认为函数将是编写此代码的最有效方式,以实现更简洁的代码。如果我想按 A 列总结数据框,我知道我会将脚本编写成这样的:
df %>%
select(A, C, D, E) %>%
group_by(A) %>%
summarise(C = sum(C), D = sum(D), E = sum(E)
和B这样的:
df %>%
select(B, C, D, E) %>%
group_by(B) %>%
summarise(C = sum(C), D = sum(D), E = sum(E)
我正在努力将其转换为适用于任何一种情况的功能。这是我目前所拥有的:
slicedata <- function(df, column_name){
df %>%
select(column_name, C, D, E) %>%
group_by(column_name) %>%
summarise(C = sum(C), D = sum(D), E = sum(E)
}
但是当我在该函数中将 B 列作为参数传递时,这就是我得到的:
slicedata(df, B)
Error in .f(.x[[i]], ...) : object 'B' not found
基本上:我正在尝试为此数据帧编写一个函数,该函数允许我按我作为参数传递的任何列聚合整数列。但是,我不明白为什么会出现此错误。
【问题讨论】:
标签: r