我对table()R中的函数有疑问。我想添加一个额外的列,以显示的计数百分比table()。我有一个像这样的数据框:
delta=data.frame(x1=c("x001","x001","x002","x002","x001","x001","x002"),x2=c(1,2,1,1,1,1,1))
Run Code Online (Sandbox Code Playgroud)
当我table()为这个数据帧计算时,我得到了:
table(delta$x1,delta$x2)
1 2
x001 3 1
x002 3 0
Run Code Online (Sandbox Code Playgroud)
可以在此表中添加百分比,或者R中有任何函数或程序包可以计算如下内容:
1 2 Number Percentage
x001 3 1 4 0.5714286
x002 3 0 3 0.4285714
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
sum()这是使用和 的快速解决方案rowSums():
> tbl <- table(delta)
> (tbl <- cbind(tbl, rowSums(tbl), rowSums(tbl) / sum(tbl)))
1 2
x001 3 1 4 0.571
x002 3 0 3 0.429
Run Code Online (Sandbox Code Playgroud)
您可以使用colnames();添加列名称 例如:
> colnames(tbl) <- c("1", "2", "N", "Pct")
> tbl
1 2 N Pct
x001 3 1 4 0.571
x002 3 0 3 0.429
Run Code Online (Sandbox Code Playgroud)
您可以使用prop.table和addmargins
tbl <- table(delta$x1,delta$x2)
prop.table(tbl)
# 1 2
# x001 0.4285714 0.1428571
# x002 0.4285714 0.0000000
addmargins(tbl)
# 1 2 Sum
# x001 3 1 4
# x002 3 0 3
# Sum 6 1 7
Run Code Online (Sandbox Code Playgroud)
编辑
当然你可以做类似的事情
rowSums(prop.table(tbl))
x001 x002
0.5714286 0.4285714
Run Code Online (Sandbox Code Playgroud)
但是我的回答是说R中有一些内置函数可以完成该table功能。