だが、一例として、虹彩データを取得し、わずかに変更してみましょう:R:長いワイド変換に削減使用して設定サフィックス
(注:代わりに、以下の2行は、「UPDATE#1」セクションから4行を使用する)
data(iris)
iris$id <- rep(1:50, times = 3)
データをこのquazi-long形式からワイド形式に変換する必要があります。その結果、各行のidは同じになります。言い換えれば、オリジナルの虹彩データは、3つのテーブル(各種に1つずつ)が1つずつ貼り付けられているとみなすことができます。私はこれらの3つのテーブルをもう一方の側面に貼り付ける必要があります。簡単だったと私はそれをこのようにやった
:
require(purrr)
require(dplyr)
iris %>% split(.$Species) %>% reduce(full_join, by = "id")
は、上記の例では、 "Petal.Length.x"、...、 "Petal.Length.y" のような名前を生成します... 、 "Petal.Length"。私はそれらが好きです: "Petal.Length.setosa"、...、 "Petal.Length.versicolor"、...、 "Petal.Length.virginica"。したがって残っているのは、元の変数名に種名を追加することだけです。
の前にmap
とsetNames
を使ってみましたが、成功しませんでした。
私の1.5GBデータセットが純粋なロングフォーマット(私は多くのid-likeカラムが必要です)で13GBになるので、tidyrのgather
とseparate
は使いたくありません。
names
とgsub
といくつかの基本正規表現を使用して次の行に名前を追加する可能性がありますが、%>%
フローを破ることなく実行できるかどうかわかりません。
UPDATE#1
、返信用のLMOをいただきありがとうございます!非常に素晴らしく清潔なソリューション!私が最初に見たとき、私は問題を過度に考えたように見えました...しかし、実際には私はそれをstackoverflowで単純化しました。のは、いくつかの混乱を追加してみましょう:
iris$id <- rep(sample(1:50, 50), times = 3) ## random order
iris$drop_me <- sample(c(1,0), 150, TRUE, c(0.8, 0.2)) ## rows wirh 0 in this column will be missing
iris <- iris[iris$drop_me == 1, ]
iris$drop_me <- NULL
は、だから私は、上記のデータを持っているし、今私は、私はいくつかの結果をスキップして実現ので、私もleft_join
からfull_join
に更新... reduce
を使用してみてください。
ありがとうございました。ここ
あなたより、lmo!非常に素晴らしく清潔な解決策です。私は、しかし、私はスタックオーバーフローで自分の問題を単純化したことに気づいた。それを正しく反映するように質問を更新しました。よろしく、rpl。 – rpl