Есть ли функция для добавления столбца в данные (rbind)

Я хотел бы добавить 3 столбца ниже данных, которые существуют. Но проблема в том, что мои первые данные получили 10 столбцов с (id,num, x, xx, xxx, xxx, xxx, .....), а вторые данные получили только 3 столбца с (id,num, x)

Я хотел бы поместить вторые данные в первые данные и для этого я хотел бы создать 7 новых столбцов (только NA) использовать rbind,

Например у меня есть данные:

df1 <- data.frame(id = 1:5, num = 6:10, V1 = 11:15, V2 = 16:20)
df2 <- data.frame(id = 6:10, num = 11:15)

Я хотел получить ожидаемый результат:

   id num V1 V2
1   1   6 11 16
2   2   7 12 17
3   3   8 13 18
4   4   9 14 19
5   5  10 15 20
6   6  11 NA NA
7   7  12 NA NA
8   8  13 NA NA
9   9  14 NA NA
10 10  15 NA NA

Я пытался создать матрицу только с NA и я исследую в сети, но я ничего не нашел

2 ответа

Основная функция R rbind требует, чтобы все data.frames были связаны вместе, имели одинаковое количество столбцов и имен. Это потребовало бы добавления лишних столбцов к меньшему кадру данных с NA строки или другая функция, которая позволяет несовпадающие столбцы. К счастью, есть функция под названием bind_rows от dplyr это делает именно это:

dplyr::bind_rows(df1, df2)

Выход:

> rbind(df1, df2)
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match

> dplyr::bind_rows(df1, df2)
   id num V1 V2
1   1   6 11 16
2   2   7 12 17
3   3   8 13 18
4   4   9 14 19
5   5  10 15 20
6   6  11 NA NA
7   7  12 NA NA
8   8  13 NA NA
9   9  14 NA NA
10 10  15 NA NA

Это внешнее соединение- просто такое, где ни один из идентификаторов не перекрывается.

merge(df1, df2, all = TRUE)
   id num V1 V2
1   1   6 11 16
2   2   7 12 17
3   3   8 13 18
4   4   9 14 19
5   5  10 15 20
6   6  11 NA NA
7   7  12 NA NA
8   8  13 NA NA
9   9  14 NA NA
10 10  15 NA NA

Смотрите FAQ о том, как объединять (объединять) данные в R? для контекста и больше вариантов.

Другие вопросы по тегам