Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in R Programming by (5.3k points)
edited by

Given two data frames a and b:

> a

           a           b           c

1 -0.2246894 -1.48167912 -1.65099363

2  0.5559320 -0.87898575 -0.15634590

3  1.8469466 -0.01487524 -0.53098215

4 -0.6875051  0.23880967  0.01824621

5 -0.6735163  0.75485292  0.44154092

> b

           a          c

1  0.4287284 -0.3295925

2  0.5201492  0.3341251

3 -2.6355570  1.7916780

4 -1.3645337  1.3642276

5 -0.4954542 -0.6660001

Is there a simple way to concatenate these to return a new data frame of the form below?

> new

           a                   b           c

1  -0.2246894   -1.48167912106676 -1.65099363

2   0.5559320  -0.878985746842256 -0.15634590

3   1.8469466 -0.0148752354840942 -0.53098215

4  -0.6875051   0.238809666690982  0.01824621

5  -0.6735163   0.754852923524198  0.44154092

6   0.4287284                  NA -0.32959248

7   0.5201492                  NA  0.33412510

8  -2.6355570                  NA  1.79167801

9  -1.3645337                  NA  1.36422764

10 -0.4954542                  NA -0.66600006

I want to merge the data frames, match the headers and insert NA in for positions in data frame b where the header is missing.

1 Answer

0 votes
by
edited by

To concatenate two data frames, you can use the rbind() function to bind the rows as follows:

Note: Column names and the number of columns of the two data frames should be the same.

x <- data.frame(a=c(1,2,3), b=c(4,5,6), c=c(7,8,9))

y <- data.frame(a=c(10,11,12), c=c(13,14,15))

y$b <- NA

new <- rbind(x,y)

 new

   a  b c

1  1 4  7

2  2 5  8

3  3 6  9

4 10 NA 13

5 11 NA 14

6 12 NA 15

You can also use the bind_rows() function from the dplyr package as follows:

library("dplyr")

> bind_rows(x,y)

   a  b c

1  1 4  7

2  2 5  8

3  3 6  9

4 10 NA 13

5 11 NA 14

6 12 NA 15

Related questions

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...