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!