我有这个数据集(假设它有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