Reputation: 61
I have two dataframes. The row names in both are dates. What I want to do is, I want to select all the common rows (having same dates) in both the data frames and create a new data frame having only these common rows.
Of course the individual columns would get appended next to each other.
Can anyone please help??
Upvotes: 5
Views: 6945
Reputation: 41
Based on BondedDust's Answer's, if you use the first line of his suggestion you can get the data like you want, since you will define an intersection of the data with the function "intersect",filter the data with the operators ('[' and ']') and bind the data by columns with the 'cbind' function.
cbind( df1[ intersect(rownames(df1), rownames(df2)), ])
Upvotes: 0
Reputation: 263451
Try:
merge(df1, df2, by="row.names")
?merge
Can also use by=0 instead of 'row.names'. And BTW the rownames are not R Date class, but are character valued. I suppose one could also do this:
cbind( df1[ intersect(rownames(df1), rownames(df2)), ] ,
df2[ intersect(rownames(df1), rownames(df2)), ] )
Upvotes: 5