2017-08-03 56 views
1

我试图选择正确的列从数据帧列内使用ddply总数的总结:如何总结一个串引用

df2 <- ddply(df1,'col1', summarise, total = sum(substr(variable,1,3))) 

这似乎并不奏效,因为你可以”总结一个字符,但我想传递给列的引用,而不是sum字符串的结果。有没有办法解决这个问题?

实施例数据&希望的输出:

变量= “2017年8月”

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

刚刚添加了,对于慢回复抱歉 – Jess

回答

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

+0

作品,谢谢!我会检查阅读。 – Jess