Объединение фреймов данных, но выбор столбцов для сохранения на основе файла - PullRequest
0 голосов
/ 27 июня 2019

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

df1:

ID DATA1 DATA2 DATA3    DATA4   DATA5 DATA9
  1   10   10     ''      ''       X   99
  2   10   10    'error'  ''           99
  3   10   10     ''      'error'      99

df2:

ID DATA1 DATA2 DATA3    DATA4   DATA5 DATA6 DATA7
  1   13   10     ''      ''       X    
  2   15   25     ''      ''            X
  3   10   10     ''      ''               'error'

желаемый результат:

ID DATA1 DATA2  DATA3    DATA4     DATA5 DATA6  DATA7  DATA9
  1   13   10      ''      ''        X                   99
  2   15   25    'error'   ''              X             99
  3   10   10      ''    'error'               'error'   99

Сейчас я попытался найти простое решение (я знаю, что это можно сделать вручную), поскольку в обоих файлах много столбцов, и ручная установка столбцов, которые я буду хранить, может оказаться не лучшим вариантом

РЕДАКТИРОВАТЬ Я забыл упомянуть, что кадры данных могут не всегда иметь одинаковое количество столбцов, и мне нужно сохранять всю информацию и обновлять все, что поступает, обновляется в новом файле. Спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Судя по вашему вопросу, у вас есть представление о том, какие столбцы следует сохранить в обновленном data.frame (исправьте меня, если я ошибаюсь). В этом случае с базой R вы можете сделать, например,

keepCols <- c("DATA3", "DATA4")

(df <- cbind(df2[, !(names(df2) %in% keepCols)], df1[, keepCols]))
#>   ID DATA1 DATA2 DATA5 DATA6 DATA7 DATA9 DATA3 DATA4
#> 1  1    13    10     X                99            
#> 2  2    15    25           X          99 error      
#> 3  3    10    10             error    99       error

## reorder columns if necessary
df[, c("ID", sort(setdiff(names(df), "ID")))]
#>   ID DATA1 DATA2 DATA3 DATA4 DATA5 DATA6 DATA7 DATA9
#> 1  1    13    10                 X                99
#> 2  2    15    25 error                 X          99
#> 3  3    10    10       error             error    99
0 голосов
/ 27 июня 2019

Мы можем просто присвоить значения столбцов ('DATA3', 'DATA4') из первого набора данных во второй

df2[4:5] <- df1[4:5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...