在多个列之间从列表(使用通配符)进行搜索后,将指示符变量添加到dataframe
我昨天发布了一个相关的问题,这个问题已经解决了:见 前一个问题与基于代码列表的子集设置有关,该列表在多个列中添加了“通配符” 我今天的问题与此类似,我想在dataframe中创建一个指示符变量,用于指示列表(M16,M17)中带有通配符(^M16,^M17)的预定义代码之一是否出现在多个指定列(pr1,pr2,pr3)的任意位置 开始数据集在多个列之间从列表(使用通配符)进行搜索后,将指示符变量添加到dataframe,r,R,我昨天发布了一个相关的问题,这个问题已经解决了:见 前一个问题与基于代码列表的子集设置有关,该列表在多个列中添加了“通配符” 我今天的问题与此类似,我想在dataframe中创建一个指示符变量,用于指示列表(M16,M17)中带有通配符(^M16,^M17)的预定义代码之一是否出现在多个指定列(pr1,pr2,pr3)的任意位置 开始数据集 #make a simple data set id = c(1,2,3,4,5,6) pr1 = c("M151", "M141", "M161", "M
#make a simple data set
id = c(1,2,3,4,5,6)
pr1 = c("M151", "M141", "M161", "M177", "M197", "M200")
pr2 = c("M100", "M101", "M120", "M135", "M144", "M190")
pr3 = c("M210", "M205", "M167", "M121", "M166", "M174")
data <- data.frame(id,pr1,pr2,pr3)
#创建一个简单的数据集
id=c(1,2,3,4,5,6)
pr1=c(“M151”、“M141”、“M161”、“M177”、“M197”、“M200”)
pr2=c(“M100”、“M101”、“M120”、“M135”、“M144”、“M190”)
pr3=c(“M210”、“M205”、“M167”、“M121”、“M166”、“M174”)
数据这是一个非常快速、肮脏、笨拙但实用的解决方案
for (n in names(data)){x<- cbind(x,grepl("^M16|^M17", data[,n]))}
data$indicator <- apply(x,1, any)
for(n in names(data)){x我们可以将'pr'列粘贴在一起,然后使用grep
创建'indicator'列
data$indicator <- +(grepl('\\b(M16|M17)',
do.call(paste, data[grep('^pr', names(data))])))
data$indicator
#[1] 0 0 1 1 1 1
data$indicator这是一个很好的解决方案!我同意-谢谢你们两位的帮助!记录在案,如果M16 | M17等是一个较长的列表(比如20或30个代码),是否可以指定为一个对象?@health\u code如果你有一个20或30个代码的向量,即v1@akrun谢谢!这正是我想要的。
for (n in names(data)){x<- cbind(x,grepl("^M16|^M17", data[,n]))}
data$indicator <- apply(x,1, any)
data$indicator <- +(grepl('\\b(M16|M17)',
do.call(paste, data[grep('^pr', names(data))])))
data$indicator
#[1] 0 0 1 1 1 1