合并R中数据框中重复变量的内容

时间:2017-02-04 16:52:35

标签: r dataframe merge

我合并了R中的各种数据帧,这些数据帧具有相同名称的变量。在合并文件中,我得到变量名称为varA,varA.x,varA.x1,varA.x.y等。我想创建一个文件,将所有这些变量的内容合并到一个列中。作为我的文件的一个例子:

ID weight age varA varA.x varA.x.y varA.x.y.1
1    50    30  2     NA      NA        NA
2    78    34  NA     3      NA        NA
3    56    56  NA     NA     NA        6
4    56    67  NA     NA     7         NA

我想要一个看起来像这样的文件:

ID weight age varA
1   50    30   2
2    78    34  3
3    56    56  6
4    56    67  7

使用ifelse是不可行的:`data $ varA = ifelse(is.na(varA.x),varA.y,varA.x),因为语句太长,因为我有这么多重复的变量

你能帮助我吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

我们可以使用coalesce

中的tidyr
library(tidyverse)
df1 %>%
   mutate(varA = coalesce(varA, varA.x, varA.x.y, varA.x.y.1)) %>% 
   select_(.dots = names(.)[1:4])
#   ID weight age varA
#1  1     50  30    2
#2  2     78  34    3
#3  3     56  56    6
#4  4     56  67    7

或使用pmax

中的base R
cbind(df1[1:3], varA=do.call(pmax, c(df1[grep("varA", names(df1))], na.rm = TRUE)))