Pir*_*ate 7 r margin contingency
我试图通过将每行除以行总和得到每个单元格的比例,但是R给了我一个错误说,
data.table $ Country:$ operator对原子向量无效
我怎样才能解决这个问题?另外,如何将整个列和行的总和值添加到data.table?我跑的时候会得到这个值addmargins(data.table)
,但是我想将这些值附加到我的数据帧中.
这是我的代码:
x = c(40,50,30,30,50)
y = c(40,20,30,40,45)
data.table = rbind(x,y)
data.table
dimnames(data.table)=list("Country"=c("England","Germany"),"Score"=c("Q-Score","T-score","X-score","Y-score","Z-score"))
addmargins(data.table)
table(data.table$Country,data.table$Score/rowSums(table(data.table&Country,data.table$Score)))
Run Code Online (Sandbox Code Playgroud)
mne*_*nel 12
调用的输出table
是类的对象table
.这基本上是一个array
.您不能用于$
引用数组或原子向量.(因此错误).
如果要将结果分配给addmargins(data.table)
对象,那么您可以自由地执行此操作
margin_table <- addmargins(data.table)
Run Code Online (Sandbox Code Playgroud)
看起来你想要创建一个相对比例的表.
prop.table
对此很有用.
prop.table(margin_table)
Score
Country Q-Score T-score X-score Y-score Z-score Sum
England 0.02666667 0.03333333 0.02 0.02000000 0.03333333 0.1333333
Germany 0.02666667 0.01333333 0.02 0.02666667 0.03000000 0.1166667
Sum 0.05333333 0.04666667 0.04 0.04666667 0.06333333 0.2500000
Run Code Online (Sandbox Code Playgroud)
你也可以prop.table
在原版上运行以获得行比例(1 =行,2 =列)
prop.table(data.table, margins = 1)
Score
Country Q-Score T-score X-score Y-score Z-score
England 0.2000000 0.2500000 0.1500000 0.1500000 0.2500000
Germany 0.2285714 0.1142857 0.1714286 0.2285714 0.2571429
Run Code Online (Sandbox Code Playgroud)
为帮助文件table
(通过访问?table
或help('table')
详尽,并且包含指向您的帮助文件prop.table
和addmargins
!