8

我试图通过将每一行除以行总和来获得每个单元格的比例,但是 R 给了我一个错误说,

data.table$Country 中的错误:$ 运算符对原子向量无效

我怎样才能解决这个问题?另外,如何将整个列和行的总和值添加到 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)))
4

1 回答 1

14

调用的输出table是 class 的对象table。这基本上是一个array. 您不能用于$引用数组或原子向量。(因此错误)。

如果您想将结果分配addmargins(data.table)给一个对象,那么您可以自由地这样做

margin_table <- addmargins(data.table)

看起来你想创建一个相对比例的表。

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

您还可以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

的帮助文件table(由?tableor访问help('table')是详细的,并且包含指向 和 的帮助文件的prop.table链接addmargins

于 2012-10-30T03:33:03.803 回答