Merging multiple text files in R with a constraint -
i have 10 text files containing 1000's of rows.
example: first file:
v1 v2 1 2 2 3 10 20 1 4 ..... second file:
v1 v2 1 2 8 10 ..... what want final file contain 12 columns. first 2 columns representing relationship , next 10 columns telling different files ( represented 1 if pair nowadays , 0 if not nowadays ) example:
final file:
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 1 2 1 1 0 0 1 0 1 1 0 1 2 3 1 0 1 1 0 0 0 1 1 0 now, did sort every file pairs 1 first number appears on top followed other numbers, i.e.
for particular file, did that,
v1 v2 1 2 1 3 1 10 1 5 2 10 2 15 ....... then, tried using merge command, however, know it's not right one. not able think of other method it.
here's 1 way it. i'll assume you've read files list of data.frames, e.g. l <- lapply(filenames, read.table). i'll simulate l below.
# create dummy info l <- replicate(5, expand.grid(1:10, 1:10)[sample(100, 10), ], simplify=false) # add together column each data.frame in l. # indicate presence of pair when merge. l <- lapply(seq_along(l), function(i) { l[[i]][, paste0('df', i)] <- 1 l[[i]] }) # merge things # (hat-tip @charles - http://stackoverflow.com/a/8097519/489704) l.merged <- reduce(function(...) merge(..., all=t), l) head(l.merged) # var1 var2 df1 df2 df3 df4 df5 # 1 1 2 na na na 1 na # 2 1 5 1 na na na 1 # 3 1 9 na na na 1 na # 4 1 10 na na 1 1 na # 5 2 5 na na 1 na na # 6 2 6 na 1 na 1 na easy plenty convert na 0 if want, e.g. with:
l.merged[is.na(l.merged)] <- 0 relevant post: merge multiple info frames in list simultaneously
r
No comments:
Post a Comment