考虑下面的数据帧:变换频率的因子水平成比例
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表示的value 1
从合计值的取aspects
下对应于dimension
百分比s1
(在这种情况下为15)等
我搜索了论坛,但创建百分比的答案只能跨一列而不是两列。我最终通过使用aggregate
首先计算了跨维度方面的df总值,然后生成了此列。然后我将最初的df
与新的merge
合并,并通过将值列除以总值来创建百分比列。但我觉得这很笨拙。有没有更简单的方法来做到这一点?