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

への呼び出しの出力は、tableclass のオブジェクトです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によってアクセスされるのヘルプ ファイルは詳細で、および!のヘルプ ファイルへのリンクが含まれています。?tablehelp('table')prop.tableaddmargins

于 2012-10-30T03:33:03.803 に答える