如何将总和添加到表中并获取 R 中每个单元格的比例
Posted
技术标签:
【中文标题】如何将总和添加到表中并获取 R 中每个单元格的比例【英文标题】:How to add the total sums to the table and get proportion for each cell in R 【发布时间】:2012-10-19 09:22:36 【问题描述】:我试图通过将每一行除以行总和来获得每个单元格的比例,但 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)))
【问题讨论】:
您的代码中没有任何地方创建 data.frame。 【参考方案1】:调用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
的帮助文件的链接!
【讨论】:
感谢您在添加边距方面的帮助!实际上我并没有试图获得相对比例。我正在尝试将英格兰的行除以它的行和,并将德国的行除以其行和。你能告诉我如何使用这张桌子来做到这一点吗?还是我应该制作不同的数据? 查看我的编辑。阅读帮助文件!如果您正在做的事情是标准的事情,那么几乎可以肯定的是,它的包中会有一个函数。以上是关于如何将总和添加到表中并获取 R 中每个单元格的比例的主要内容,如果未能解决你的问题,请参考以下文章