我试图通过将每一行除以行总和得到每个单元格的比例,但是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)))
答案 0 :(得分:12)
对table
的调用输出是类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
的帮助文件(由?table
或help('table')
访问)详细,其中包含指向prop.table
和addmargins
的帮助文件的链接!