[解決済み] R tidyrで複数の列を広げる [重複].
2023-02-10 21:07:02
質問
このサンプル変数を例にとると
df <- data.frame(month=rep(1:3,2),
student=rep(c("Amy", "Bob"), each=3),
A=c(9, 7, 6, 8, 6, 9),
B=c(6, 7, 8, 5, 6, 7))
私は
spread
から
tidyr
に変更すると、ワイドフォーマットになります。
> df[, -4] %>% spread(student, A)
month Amy Bob
1 1 9 8
2 2 7 6
3 3 6 9
しかし、2つの値を分散させるにはどうすればよいのでしょうか。
A
と
B
のような出力になります。
month Amy.A Bob.A Amy.B Bob.B
1 1 9 8 6 5
2 2 7 6 7 6
3 3 6 9 8 7
どのように解決するのですか?
ここでは、シンプルかつ非常に効率的な解決策として
data.table
library(data.table) ## v >= 1.9.6
dcast(setDT(df), month ~ student, value.var = c("A", "B"))
# month Amy_A Bob_A Amy_B Bob_B
# 1: 1 9 8 6 5
# 2: 2 7 6 7 6
# 3: 3 6 9 8 7
あるいは、可能な限り
tidyr
解決策
df %>%
gather(variable, value, -(month:student)) %>%
unite(temp, student, variable) %>%
spread(temp, value)
# month Amy_A Amy_B Bob_A Bob_B
# 1 1 9 6 8 5
# 2 2 7 7 6 6
# 3 3 6 8 9 7
2019/10/22編集
のコメントにもあるように
gjabel
より新しいTidyrバージョン(v1.0.0+)
では
pivot_wider
と
pivot_longer
関数(現在は
成熟
の状態です)、したがって、より新しいアプローチとしては
pivot_wider(data = df,
id_cols = month,
names_from = student,
values_from = c("A", "B"))
# # A tibble: 3 x 5
# month A_Amy A_Bob B_Amy B_Bob
# <int> <dbl> <dbl> <dbl> <dbl>
# 1 1 9 8 6 5
# 2 2 7 6 7 6
# 3 3 6 9 8 7
関連
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
[解決済み] HTML、PDF、DOCXで見栄えのするシンプルな手動のRMarkdownテーブル
-
[解決済み] Rでcは何をするのですか?重複] [重複
-
[解決済み] Rの再現性のある優れた例題の作り方
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] ベクトル中のxの値を持つ要素の個数を数える
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] データフレーム内の列を名前でドロップする方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
RStudio の "plot.new() : figure margins too large" 問題を解決する。
-
R: hclust(d, method = method)でのエラー : 外部関数呼び出しは NA/NaN/Inf(arg10) を持つことができません。
-
R: 環境と変数のスコープ問題
-
[解決済み] 行の識別子が重複しているスプレッドの使用
-
R言語エラー:図の余白が大きすぎる 解決方法
-
[解決済み] Rでロードされているパッケージのバージョンを調べるには?
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み] ggplot2 Rプロットで軸の制限を設定するには?
-
[解決済み】Rスクリプトで警告をグローバルに抑制する方法
-
[解決済み] テーブルをデータフレームに変換する方法