我想汇总数据并创建动态列列并存储在不同的数据框中:
数据类似于:
col1 col2 col3
A 1 200
B 1 300
A 2 400
k=c("A","B","C")
for(i in k)
{
group_data <- group_by(data[data$col1==i,], col2)
summary_i<- summarize(group_data ,paste("var",k[i],sep="_") = n())
}
预期产出:
名称为summary_A, summary_B, summary_C
的三个数据框,分别包含变量var_A
,var_B
和var_C
。
答案 0 :(得分:0)
正如@MrFlick正确指出的那样,有更好的方法可以解决您的问题 无论如何,这是您的代码的工作版本:
data <- structure(list(col1 = structure(c(1L, 2L, 1L), .Label = c("A",
"B"), class = "factor"), col2 = c(1L, 1L, 2L), col3 = c(200L,
300L, 400L)), .Names = c("col1", "col2", "col3"), class = "data.frame", row.names = c(NA,
-3L))
k=c("A","B","C")
for (i in seq_along(k)) {
group_data <- group_by(data[data$col1==k[i],], col2)
vark <- paste('var',i,sep='_')
eval(parse(text=paste("summary_",i," <- summarize(group_data,", vark, " = n())",sep="")))
}
print(summary_1)
# A tibble: 2 x 2
# col2 var_1
# <int> <int>
# 1 1 1
# 2 2 1
print(summary_2)
# A tibble: 1 x 2
# col2 var_2
# <int> <int>
# 1 1 1
print(summary_3)
# A tibble: 0 x 2
# ... with 2 variables: col2 <int>, var_3 <int>