如何对子字符串引用

时间:2017-08-03 21:52:00

标签: r plyr

我尝试使用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

1 个答案:

答案 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