R 如果字符串向量等于多个字符串向量中的元素,则创建等于一的伪值

R 如果字符串向量等于多个字符串向量中的元素,则创建等于一的伪值,r,R,在R中,如果一个字符串向量[61,1]b中的元素与3个[1,1]字符串向量c1、c2、c3中的元素匹配,我想将[61,1]伪向量a设置为1 我试过这样的方法: for(i in 1:3) { data$a[data$b==data2$ci]<-1 } 我希望“a”看起来像: a 1 1 0 1 1 ... 0 编辑: 此代码适用于: data$a <- ifelse(data$b %in% data2$p1, 1, if

在R中,如果一个字符串向量[61,1]b中的元素与3个[1,1]字符串向量c1、c2、c3中的元素匹配,我想将[61,1]伪向量a设置为1

我试过这样的方法:

for(i in 1:3) { 
  data$a[data$b==data2$ci]<-1
}
我希望“a”看起来像:

a 1 1 0 1 1 ... 0
编辑:

此代码适用于:

data$a <- ifelse(data$b %in% data2$p1, 1, 
                          ifelse(data$b %in% data2$p2, 1,
                                 ifelse(data$b %in% data2$p3, 1, 0)))

data$a如果我正确理解了这个问题,最简单的方法就是使用ifelse语句。请在下一个问题中添加一个可复制的示例,以使那些试图为您提供解决方案的人更容易理解

Data <- data.frame(a = 0,
               b = c("M", "M", "D", "M", "X", "P"),
               stringsAsFactors = FALSE)

Data2 <- data.frame(a = c("c1", "c2", "c3"),
                    b = c("M", "X", "P"),
                    stringsAsFactors = FALSE)

Data$a <- ifelse(Data$b %in% Data2$b, 1, 0)
数据