使用部分字符串匹配创建指标变量

use*_*983 2 r pattern-matching

我正在尝试为我的数据中的不同种族/民族创建一个指标变量。在我的数据 ('mydata') 中,我有一个名为“Race”的变量。这个变量有一个人在问卷中被标记为种族的每个框的输出。所以它看起来像这样:

ID   Race
6    American Indian or Alaska Native, Black or African American, Hispanic or Latino
7    Hispanic or Latino
10   Native Hawaiian or Other Pacific Islander
11   Hispanic or Latino, White
29   White
30   Black or African American
31   American Indian or Alaska Native, Hispanic or Latino, White
Run Code Online (Sandbox Code Playgroud)

我想创建一个变量,以便例如如果有人说他们是西班牙裔,而忽略他们所说的其他内容,在新的“西班牙裔”变量下,他们会得到一个“1”,或者如果他们没有说他们是西班牙裔,那么“西班牙裔” " 会得到 0。

我知道这需要使用部分字符串匹配,但我很难获得我想要的输出。我做了多次尝试,但运气不佳。这是我最后一次尝试的代码:

if(mydata[grep("Hispanic", mydata$Race)]) {
  Hispanic<-1
 } else {
  Hispanic<-0
 }      
Run Code Online (Sandbox Code Playgroud)

Hen*_*rik 5

您可以使用greplwhich “返回一个逻辑向量(匹配或不匹配 x 的每个元素)”(来自?grepl)。然后可以使用以下方法将生成的逻辑向量转换为 0 ( FALSE) 或 1 ( TRUE) as.integer

mydata$Hispanic <- as.integer(grepl(pattern = "Hispanic", x = mydata$Race))
mydata$Hispanic
# [1] 1 1 0 1 0 0 1
Run Code Online (Sandbox Code Playgroud)