[解決済み] データフレーム内の列を順番に並べてグループ(四分位、十分位など)を素早く作る方法
2023-06-26 08:10:20
質問
多くの質問と回答がありますね。
order
と
sort
. ベクトルやデータフレームをグループ化(四分位値や十分位値など)してソートするものはないのでしょうか?私は手動で解決しましたが、グループでテストされたより良い解決策がありそうです。
これが私の試みです。
temp <- data.frame(name=letters[1:12], value=rnorm(12), quartile=rep(NA, 12))
temp
# name value quartile
# 1 a 2.55118169 NA
# 2 b 0.79755259 NA
# 3 c 0.16918905 NA
# 4 d 1.73359245 NA
# 5 e 0.41027113 NA
# 6 f 0.73012966 NA
# 7 g -1.35901658 NA
# 8 h -0.80591167 NA
# 9 i 0.48966739 NA
# 10 j 0.88856758 NA
# 11 k 0.05146856 NA
# 12 l -0.12310229 NA
temp.sorted <- temp[order(temp$value), ]
temp.sorted$quartile <- rep(1:4, each=12/4)
temp <- temp.sorted[order(as.numeric(rownames(temp.sorted))), ]
temp
# name value quartile
# 1 a 2.55118169 4
# 2 b 0.79755259 3
# 3 c 0.16918905 2
# 4 d 1.73359245 4
# 5 e 0.41027113 2
# 6 f 0.73012966 3
# 7 g -1.35901658 1
# 8 h -0.80591167 1
# 9 i 0.48966739 3
# 10 j 0.88856758 4
# 11 k 0.05146856 2
# 12 l -0.12310229 1
もっと良い(きれいな/速い/一行で済む)方法はないのでしょうか?ありがとうございます!
どのように解決するのですか?
私が使っている方法は、以下のいずれか、または
Hmisc::cut2(value, g=4)
:
temp$quartile <- with(temp, cut(value,
breaks=quantile(value, probs=seq(0,1, by=0.25), na.rm=TRUE),
include.lowest=TRUE))
代替案としては
temp$quartile <- with(temp, factor(
findInterval( val, c(-Inf,
quantile(val, probs=c(0.25, .5, .75)), Inf) , na.rm=TRUE),
labels=c("Q1","Q2","Q3","Q4")
))
最初のものは、四分位を値でラベリングするという副作用があり、私はそれを"良いこと"と考えています。次のように使用できます。
labels=
で
cut
を追加するか、またはこの行をあなたのコードに追加してください。
temp$quartile <- factor(temp$quartile, levels=c("1","2","3","4") )
あるいはさらに早く、しかし仕組みは少し不明瞭ですが、もはや係数ではなく、数値ベクトルです。
temp$quartile <- as.numeric(temp$quartile)
関連
-
R LanguageError in hist.default() : 'x' は数値でなければなりません.
-
ggplot2 からグリッドと背景色を削除する。
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み】データフレームの文字列カラムを複数カラムに分割する
-
[解決済み】データフレームのカラムを数値型に変換する方法は?
-
[解決済み】データフレームでグループ内の行に番号を付ける
-
[解決済み] テーブルをデータフレームに変換する方法
-
[解決済み] セッションが作成されません。このバージョンのChromeDriverはChromeバージョンにしか対応していません ChromeDriver ChromeでSeleniumを使用した場合の74エラー
-
[解決済み] Rでデータフレームに行を追加する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
R - よくあるエラーとその原因 - 注意事項
-
R言語エラー:図の余白が大きすぎる 解決方法
-
R言語ダウンロード機能 download.fileとダウンロード解析
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] HTML、PDF、DOCXで見栄えのするシンプルな手動のRMarkdownテーブル
-
[解決済み] リストやデータフレームの要素にアクセスするためのブラケット[ ]とダブルブラケット[[ ]]の違いについて
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
-
[解決済み】エラー:Rで関数が見つかりませんでした。