dplyrフィルター。変数の最小値を持つ行を取得するが、最小値が複数ある場合は最初の行のみ取得する
2023-10-26 02:48:38
質問
を使ってグループ化されたフィルタを作りたいのですが
dplyr
の最小値を持つ行だけが返されるようにします。
x
.
私の問題点は 予想通り、複数の極小値を持つ場合 すべて の行が返されます。しかし、私の場合は 最初の行だけが欲しいのです。 というように、複数の最小値が存在する場合は
以下はその例です。
df <- data.frame(
A=c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
x=c(1, 1, 2, 2, 3, 4, 5, 5, 5),
y=rnorm(9)
)
library(dplyr)
df.g <- group_by(df, A)
filter(df.g, x == min(x))
予想通り、全ての最小値が返されます。
Source: local data frame [6 x 3]
Groups: A
A x y
1 A 1 -1.04584335
2 A 1 0.97949399
3 B 2 0.79600971
4 C 5 -0.08655151
5 C 5 0.16649962
6 C 5 -0.05948012
ddplyを使えば、そのようにタスクをアプローチすることができたでしょう。
library(plyr)
ddply(df, .(A), function(z) {
z[z$x == min(z$x), ][1, ]
})
... これは動作します。
A x y
1 A 1 -1.04584335
2 B 2 0.79600971
3 C 5 -0.08655151
Q: dplyrでこれにアプローチする方法はありますか? (速度の理由から)
どのように解決するのですか?
念のため。ここで、最終的な
dplyr
の最終的な解決策です。
library(dplyr)
df.g <- group_by(df, A)
filter(df.g, rank(x, ties.method="first")==1)
関連
-
8.2 カマグラ(No.31〜No.40)
-
[解決済み] Rのdplyrで "Adding missing grouping variables "というメッセージが表示される。
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] データフレームを結合(マージ)する方法(内側、外側、左側、右側)
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] Rの代入演算子"="と"<-"の違いは何ですか?
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] 空のdata.frameを作成する
-
[解決済み】RでCRANミラーを選択する方法
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
8.2 カマグラ(No.31〜No.40)
-
R read.table Error:埋め込まれたヌルが含まれているようです。
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
Rのexpand.grid()コマンド
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] ggplot 2.0.0でのポイントサイズ
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] Rで2つのグラフを同じプロットで表示する
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える