Добавление фреймов данных в R на основе имен столбцов - PullRequest
0 голосов
/ 14 мая 2018

Я относительно новичок в R, так что терпите меня.У меня есть список фреймов данных, которые мне нужно объединить в один фрейм данных.Итак:

  dfList <- list(
    df1 = data.frame(x=letters[1:2],y=1:2),
    df2 = data.frame(x=letters[3:4],z=3:4)
  )

выглядит как:

$df1   
  x y
1 a 1
2 b 2

$df2
  x z
1 c 3
2 d 4

, и я хочу, чтобы они объединили общие столбцы и добавили что-нибудь, чего еще не было.результат будет:

final result
  x y z
1 a 1
2 b 2
3 c   3
4 d   4

Возможно ли это вообще?

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Просто используя do.call с rbind.fill

do.call(rbind.fill,dfList)
  x  y  z
1 a  1 NA
2 b  2 NA
3 c NA  3
4 d NA  4
0 голосов
/ 14 мая 2018

Вы можете сделать это с помощью base функции merge():

merge(dfList$df1, dfList$df2, by = "x", all = TRUE)
#   x  y  z
# 1 a  1 NA
# 2 b  2 NA
# 3 c NA  3
# 4 d NA  4

Или с помощью dplyr пакета с функцией full_join:

dplyr::full_join(dfList$df1, dfList$df2, by = "x")
#   x  y  z
# 1 a  1 NA
# 2 b  2 NA
# 3 c NA  3
# 4 d NA  4

Они оба объединяют всеэто в обоих data.frames.

Надеюсь, что это работает для вас.

0 голосов
/ 14 мая 2018

Да, это довольно просто, на самом деле:

library(dplyr)
df_merged <- bind_rows(dfList)
df_merged

  x  y  z
1 a  1 NA
2 b  2 NA
3 c NA  3
4 d NA  4

И если вы не хотите NA в пустых ячейках, вы можете заменить их следующим образом:

df_merged[is.na(df_merged)] <- 0  # or whatever you want to replace NA with
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...