我々はdata.table
library(data.table)
DT <- setDT(df1)[,.(list(rep(names(df1)[-1], unlist(.SD)))) ,ID]
DT$V1
#[[1]]
#[1] "A" "A" "A" "A" "A" "B" "B" "B" "C" "C" "D"
#[[2]]
#[1] "A" "A" "A" "B" "B" "C" "C" "D"
#[[3]]
#[1] "A" "A" "A" "A" "B" "B" "C" "D" "E"
を使用することができますかbase R
オプションがsplit
lst <- lapply(split(df1[-1], df1$ID), rep, x=names(df1)[-1])
lst
#$`1`
#[1] "A" "A" "A" "A" "A" "B" "B" "B" "C" "C" "D"
#$`2`
#[1] "A" "A" "A" "B" "B" "C" "C" "D"
#$`3`
#[1] "A" "A" "A" "A" "B" "B" "C" "D" "E"
です
1つのオプション(data.frame
が同じ長さ(列とlist
のように)data.frame
への変換中に長さを等しくするために最後にNA
を追加することによってdata.frame
にlist
に変換され、我々はcsvファイルに「LST」を書きたい場合)
res <- do.call(rbind, lapply(lst, `length<-`, max(lengths(lst))))
それともwrite.csv
を使用し、その後
stringi
library(stringi)
res <- stri_list2matrix(lst, byrow=TRUE)
から便利な機能を使用し、
write.csv(res, "yourdata.csv", quote=FALSE, row.names = FALSE)
ありがとうございました。もう一つ質問があります:出力をCSVに書き込む方法。資料? –
csvsは長方形のデータを必要とするため、リストはcsvに書き込むように設計されていません。 Rで作業している場合は、 'write.csv'と' read.csv'より 'save'と' load'を使うべきです。あなたがcsvに書き込む必要があり、これが最初の質問から範囲外である場合、私はこれが投稿するには素晴らしい第二の質問をするだろうと思う。これらの回答から受け取ったリストデータから始めます。私は同じものが存在すると確信していますが、それを見つけることはできませんでした。 – lmo