r - Add a column by row names for the different length -
i have found 2 post here, has partial solution of problem. first here , second here.
i have little bit different situation. have list of data frames different length, want join 1 data frame regarding row names. if, row name not in data frame, column should have nan
value.
for example have next 3 data frames:
mylist[1]
-> df1:
num 1 b 1
mylist[2]
-> df2:
num 1 b 2 c 3 d 1
mylist[3]
-> df3:
num c 1 d 1
what want have next dataframe:
num1 num2 num3 1 1 nan b 1 2 nan c nan 3 1 d nan 1 1
it means, nan values on right place , not @ bottom of column, in first example. length of dataframes different , not same in second example.
i in 2 steps:
1) add id-column containing rownames:
mylist <- lapply(mylist, function(x) transform(x, id = row.names(x)))
2) merge data.frame's id-column:
reduce(function(...) merge(..., = "id", all=true), mylist) # id num.x num.y num #1 1 1 na #2 b 1 2 na #3 c na 3 1 #4 d na 1 1
this kind of approach valuable if have many items in mylist
since don't have type each merge
command manually.
Comments
Post a Comment