Есть ли функция для добавления столбца в данные (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? для контекста и больше вариантов.