r-如何将百分比列添加到列表的每个数据集



我有这个数据集(假设它有900个变量(,列表l2如下:

df = data.frame(x = c(1,0,0,0,1,1,1), y = c(2,2,2,2,3,3,2) )
l1 = lapply(df,table)
l2 = lapply(l1,as.data.frame)

我希望在每个数据帧的Freq列的基础上,为每个数据帧添加一个百分比列。感谢您的帮助。

您可以使用proportions:

lapply(df, (x) transform(as.data.frame(table(x)), prop = proportions(Freq)))
$x
x Freq      prop
1 0    3 0.4285714
2 1    4 0.5714286
$y
x Freq      prop
1 2    5 0.7142857
2 3    2 0.2857143

我们可以使用

proportions(table(data.frame(nm1 = names(df)[col(df)], val = unlist(df))), 1)

-输出

val
nm1         0         1         2         3
x 0.4285714 0.5714286 0.0000000 0.0000000
y 0.0000000 0.0000000 0.7142857 0.2857143

最新更新