【发布时间】:2014-11-07 15:18:24
【问题描述】:
我有一些数据(如下),我想通过某个分组变量根据当前列的总和迭代地添加列,并且我想将列命名为当前名称的粘贴值 +“_tot”。我认为 dplyr 和 lapply 的组合是解决它的方法,但我无法使结构正确。
set.seed(1234)
data <- data.frame(
biz = sample(c("telco","shipping","tech"), 50, replace = TRUE),
region = sample(c("mideast","americas"), 50, replace = TRUE),
june = sample(1:50, 50, replace=TRUE),
july = sample(100:150, 50, replace=TRUE)
)
所以,我想要做的是 1)按“区域”对这些数据进行分组,然后为接下来的每个月添加一个新列,即该月值的总和(在实际数据框中,有很多时期接下来)。
基本上,我想应用这个功能
library(dplyr)
data %>% group_by(region) %>% mutate(june_tot = sum(june))
跨越每个月,无需指定“六月”或“七月”。我最初的看法:
testfun <- function(df, col) {
name <- paste(col, "_tot", sep="")
data2 <- df %>% group_by(region) %>% summarise(name=sum(col))
return(data2)
}
但是应用这个不起作用,因为我必须指定要调用初始函数的列。当然,仅仅从初始函数中删除“col”参数也不起作用。
任何想法如何应用这种论点?
【问题讨论】: