【发布时间】:2015-10-17 21:21:52
【问题描述】:
考虑以下数据框:
x <-c(rep (c ("s1", "s2", "s3"),each=5 ))
y <- c(rep(c("a", "b", "c", "d", "e"), 3) )
z<-c(1:15)
x_name <- "dimensions"
y_name <- "aspects"
z_name<-"value"
df <- data.frame(x,y,z)
names(df) <- c(x_name,y_name, z_name)
如何计算并为每个因子水平添加一个新的百分比列?在这种情况下,'value' 与 'dimension' 之间的每个 'aspects' 的百分比是这样的:
为了说明:percentage 中的 7 表示从 aspects 下对应于 dimension s1(本例中为 15)等值的总和中取出的 value 1 的百分比。
我搜索了论坛,但创建百分比的答案只包含一列而不是两列。我最终制作了这个专栏,首先使用aggregate 计算跨维度方面的单独df 总值。然后我将初始df 与带有merge 的新@ 合并,并通过将值列除以总值来创建一个百分比列。但我觉得这很笨拙。有没有更简单的方法来做到这一点?
【问题讨论】: