假设有人希望将频率table
作为data.frame
对象,转换它的最佳方法是什么?我尝试了一些想法并想出了一个复杂的解决方案,我想知道是否有更好的方法。
首先我们生成一些数据:
set.seed(1)
test_df = data.frame(X = sample(0:1, 100, T),
Y = sample(0:1, 100, T))
p = table(test_df)
p2 = prop.table(p)
我对prop.table()
输出感兴趣,但它同样适用于频率table
。它看起来像这样:
> p2
Y
X 0 1
0 28 18
1 34 20
as.data.frame()
有效,但会以长格式返回结果:
> as.data.frame(p2)
X Y Freq
1 0 0 28
2 1 0 34
3 0 1 18
4 1 1 20
as.matrix()
什么都不做:
> class(as.matrix(p2))
[1] "table"
最后,一个有效的方法:
prop_table = as.data.frame(matrix(as.vector(p2), nrow = 2))
colnames(prop_table) = rownames(prop_table) = rownames(p2)
输出:
> prop_table
0 1
0 28 18
1 34 20
更好的想法?