gan*_*n3b 2 regex r coalesce dplyr
我在 R 中组合了数据集,每个数据集可能对相同的数据使用不同的列名。我需要使用正则表达式来标识需要组合的列的名称,然后通过合并运行该列名称列表。
我知道正确的正则表达式来标识我的列,并且我知道如何将列名手动写入合并函数以组合这些列,但我不知道如何自动合并使用正则表达式标识的列。
sample = data.frame("PIDno" = c('a', NA, NA), "PINID" = c(NA, 'b', NA), "ParcelId" = c(NA, NA, 'c'))
PID_search = paste("sample$",grep("*PID*|*PIN*|*PARCEL*",colnames(sample),ignore.case = TRUE, value = TRUE),sep = "")
sample$PID_combine = coalesce(sample$'PIDno',
sample$'PINID',
sample$'ParcelId')
Run Code Online (Sandbox Code Playgroud)
我们可以使用tidyverse. 选定的列将转换为characterwith mutate_at,然后将coalesce这些列转换为mutate
library(tidyverse)
sample %>%
mutate_at(vars(matches("PID|PIN|Parcel")), as.character) %>%
mutate(new = coalesce(!!! select(., matches("PID|PIN|Parcel"))))
# PIDno PINID ParcelId new
#1 a <NA> <NA> a
#2 <NA> b <NA> b
#3 <NA> <NA> c c
Run Code Online (Sandbox Code Playgroud)