我尝试使用ddply选择正确的列来汇总数据框列中的a的总和:
df2 <- ddply(df1,'col1', summarise, total = sum(substr(variable,1,3)))
它似乎没有用,因为你无法对一个字符求和,但我试图将引用传递给列,而不是对子字符串的字面结果求和。有办法解决这个问题吗?
示例数据&amp;期望的输出:
变量=&#34; 2017年8月&#34;
col1 Jun Jul Aug
1 A 1 2 3
2 A 1 2 3
3 A 1 2 3
4 A 1 2 3
5 A 1 2 3
6 B 2 3 4
7 B 2 3 4
8 B 2 3 4
9 C 3 4 5
10 C 3 4 5
Desired Output:
1 A 15
2 B 12
3 C 10
答案 0 :(得分:0)
这适用于dplyr
而不是plyr
。
# create data
df1 <- data.frame(
col1 = c(rep('A', 5), rep('B', 3), rep('C', 2)),
Jun = c(1, 1, 1, 1, 1, 2, 2, 2, 3, 3),
Jul = c(2, 2, 2, 2, 2, 3, 3, 3, 4, 4),
Aug = c(3, 3, 3, 3, 3, 4, 4, 4, 5, 5))
variable = 'Aug 2017'
# load dplyr library
library(dplyr)
# summarize each column that matches some string
df1 %>%
select(col1, matches(substr(variable, 1, 3))) %>%
group_by(col1) %>%
summarize_each(funs = 'sum')
# A tibble: 3 × 2
col1 Aug
<fctr> <dbl>
1 A 15
2 B 12
3 C 10
我还强烈建议阅读非标准和标准评估,这里: http://adv-r.had.co.nz/Computing-on-the-language.html