我有以下数据集
client_id <- c("A", "A", "B", "B", "B", "B", "B", "A", "A", "B", "B")
value <- c(10, 35, 20, 30, 50, 40, 30, 40, 30, 40, 10)
period_30 <- c(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
period_60 <- c(1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
sign <- c("D", "D", "D", "D", "C", "C", "C", "D", "D", "D", "D")
data <- data.frame(client_id, value, period_30, period_60, sign)
我可以使用此代码通过以下代码计算每个给定时期的不同拆分数量:
library(data.table)
test<- dcast(setDT(data), client_id ~ paste0("period_30", sign), value.var = "period_30", sum)
但我也想根据不同的拆分计算值。
预期结果如下所示:
client_id av.value_period_30_sign_D av.value_period_60_sign_D av.value_period_30_sign_C av.value_period_30_sign_D
A 34.16667 NaN NaN NaN
B 30.00000 34.16667 NaN 27.50000
然后,它应该可以扩展到其他拆分,例如第 1 期 X 类型的符号 X 的平均值。
我不确定这种方法是否可以实现所需的输出。但我在看fun.aggregate
争论。也许它可以与多个value.var
参数结合使用?
更新:乔尔的代码回答了问题的第一部分。
client_id sign period_30 period_60
A D 34.16667 34.16667
B D 30.00000 34.16667
B C NaN 27.50000
但是如何自动转置变量并根据拆分分配名称?