[解決済み] 比率(パーセンテージ)でコンティジェンシーテーブルを拡張する
2022-02-07 18:49:21
質問
数の分割表があるが、各グループの対応する割合で拡張したい。
いくつかのサンプルデータ(
tips
のデータセット
ggplot2
パッケージ)を使用します。
library(ggplot2)
head(tips, 3)
# total_bill tip sex smoker day time size
# 1 17 1.0 Female No Sun Dinner 2
# 2 10 1.7 Male No Sun Dinner 3
# 3 21 3.5 Male No Sun Dinner 3
まず
table
は、喫煙者と非喫煙者をカウントするために
nrow
は、被験者の総数を数える。
table(tips$smoker)
# No Yes
# 151 93
nrow(tips)
# [1] 244
そして、喫煙者と非喫煙者のパーセンテージを計算したい。こんな感じ(不細工なコード)。
# percentage of smokers
options(digits = 2)
transform(as.data.frame(table(tips$smoker)), percentage_column = Freq / nrow(tips) * 100)
# Var1 Freq percentage_column
# 1 No 151 62
# 2 Yes 93 38
何か良い方法はないでしょうか?
(さらに良いのは、列のセット(列挙する)でこれを行い、ある程度きれいにフォーマットされた出力ができることです) (例: 喫煙者、曜日、時間)
どのように解決するのですか?
もし、あなたが簡潔さを求めているのであれば、次のようなものがいいでしょう。
prop.table(table(tips$smoker))
を作成し、100でスケーリングし、お好みで丸めることができます。あるいは、もっと正確に出力してください。
tbl <- table(tips$smoker)
cbind(tbl,prop.table(tbl))
これを複数のカラムに対して行う場合、どのような出力がきれいに見えるかによって、さまざまな方向性が考えられますが、ここでは1つの選択肢を紹介します。
tblFun <- function(x){
tbl <- table(x)
res <- cbind(tbl,round(prop.table(tbl)*100,2))
colnames(res) <- c('Count','Percentage')
res
}
do.call(rbind,lapply(tips[3:6],tblFun))
Count Percentage
Female 87 35.66
Male 157 64.34
No 151 61.89
Yes 93 38.11
Fri 19 7.79
Sat 87 35.66
Sun 76 31.15
Thur 62 25.41
Dinner 176 72.13
Lunch 68 27.87
異なるテーブルを重ねるのが嫌な場合は
do.call
を作成し、リストで残す。
関連
-
[解決済み】エラー:'dimnames' [2]の長さが配列の範囲と等しくない [終了しました]
-
[解決済み】library(ggplot2)でエラー:'ggplot2'というパッケージは存在しません。
-
[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"
-
[解決済み] in% の反対: ベクターで指定された値を持つ行を除外します。
-
[解決済み] dplyrによる相対度数/比率の計算
-
[解決済み] R dataframeでNAの値をゼロに置き換えるには?
-
[解決済み] jQuery: テーブルの行数を数える
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み】PandasでSettingWithCopyWarningに対処する方法
-
[解決済み] [Solved] data.frameで全てまたは一部のNA(欠損値)を含む行を削除する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"置換する項目数が置換長の倍数でない "と表示されるのはなぜですか?
-
[解決済み】library(ggplot2)でエラー:'ggplot2'というパッケージは存在しません。
-
[解決済み】RでのMLEエラー:'vmmin'の初期値が有限でない
-
[解決済み】値を置き換えようとすると、"データフレームの添え字の割り当てで欠損値は許可されない"
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み] [Solved] read.csv warning 'EOF within quoted string' prevents complete reading of file.
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
-
[解決済み】Rでmax.printの制限値を増やす方法