私はこの質問に答えることができませんでした。
非常によく似た複数のファイルを読み込もうとしています。これらには、IDと値の2つの行が含まれています。ファイルはほとんどのIDを共有しますが、多少の違いがある場合があります。
すべてのID(繰り返しなし)の1つの列が必要で、残りの列にはIDが各ファイルに持っていた値が含まれています。
rbind関数と* apply関数の使用を検討しましたが、これらは必要なことを実行できないようです。
何か案は?
データ例
table1.txt
ID Value
Steve 25
Jim 50
table2.txt
ID Value
Jim 35
Dave 12
table3.txt
ID Value
Jim 90
Steve 40
Dave 12
最終目標は
ID table1 table2 table3
Steve 25 0 40
Jim 50 35 90
Dave 0 12 12
使用data.table
のrbindlist
持っている、idcol
あなたを助ける引数、およびdcast
その、fill
引数不足しているデータを肉付けしますが。
library(data.table)
fl = paste0("table", 1:3)
files = setNames(paste0(fl, ".txt"), fl)
DT = dcast(rbindlist(lapply(files, fread), idcol = TRUE),
ID ~ .id, value.var = "Value", fill = 0L)
DT
# ID table1 table2 table3
# 1: Dave 0 12 12
# 2: Jim 50 35 90
# 3: Steve 25 0 40
lapply(files, fread)
各ファイルを返すdata.table
ではlist
。rbindlist
これらの個々のをスタックしdata.tables
、idcol
(名前付きベクトルを渡すのに十分な知識があることと組み合わせて、lapply
それらがどのファイルから来たのかを確実に追跡します。次に、引数dcast
を0
介して不足している組み合わせを埋めて、でワイドに再形成しfill
ます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加