元データにグループごとのユニーク値/明確値のカウントを追加する
2023-08-01 20:03:06
質問
2番目の変数のグループ化によってユニークな値の数をカウントし、そのカウントを新しい列として既存のdata.frameに追加したいのです。例えば、既存のデータフレームが以下のような場合です。
color type
1 black chair
2 black chair
3 black sofa
4 green sofa
5 green sofa
6 red sofa
7 red plate
8 blue sofa
9 blue plate
10 blue chair
それぞれの
color
に対して、ユニークな
types
の数です。
color type unique_types
1 black chair 2
2 black chair 2
3 black sofa 2
4 green sofa 1
5 green sofa 1
6 red sofa 2
7 red plate 2
8 blue sofa 3
9 blue plate 3
10 blue chair 3
を使いたかったのですが
ave
を使いたかったのですが、何行も必要としない簡単な方法が見つからないようです。私は10万行あるので、効率がどの程度重要なのかもよくわかりません。
この問題と多少似ています。 グループごとの観測値/行数をカウントし、結果をデータフレームに追加する
どのように解決するのですか?
使用方法
ave
(を使用します(具体的に要求されているので)。
within(df, { count <- ave(type, color, FUN=function(x) length(unique(x)))})
必ず
type
が文字ベクトルであり、因子でないことを確認してください。
データが巨大で、そのため速度/性能が要因になる可能性があるとも言っているので、私なら
data.table
のソリューションもお勧めします。
require(data.table)
setDT(df)[, count := uniqueN(type), by = color] # v1.9.6+
# if you don't want df to be modified by reference
ans = as.data.table(df)[, count := uniqueN(type), by = color]
uniqueN
が実装されていたのは
v1.9.6
と同等であり、より高速な
length(unique(.))
. さらに、data.frames/data.tablesでも動作します。
他の解決策
plyrを使用する。
require(plyr)
ddply(df, .(color), mutate, count = length(unique(type)))
使用方法
aggregate
:
agg <- aggregate(data=df, type ~ color, function(x) length(unique(x)))
merge(df, agg, by="color", all=TRUE)
関連
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] JavaScriptの配列で一意な値をすべて取得する(重複を排除する)。
-
[解決済み] リスト項目の出現回数を数えるにはどうしたらいいですか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] JavaScriptでオブジェクトの配列から明確な値を取得する方法は?
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] 先頭と末尾の空白を削除するにはどうしたらよいですか?
-
[解決済み] Pandas 'count(distinct)' と同等です。
-
[解決済み】文字列中のある文字の出現回数をカウントする
最新
-
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でエラー:単項演算子への引数が無効
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
[解決済み] ggplot 2.0.0でのポイントサイズ
-
[解決済み] 空のdata.frameを作成する
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] ggplotで凡例のタイトルを変更する方法
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み] データフレーム内のランダムな行をサンプリングする
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】set.seed関数を使用する理由