我合并了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),因为语句太长,因为我有这么多重复的变量
你能帮助我吗?非常感谢你。答案 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)))