搜索列名字符串并返回一系列列的逻辑(R)

时间:2018-03-06 09:04:46

标签: r stringr

示例数据:

for(i in movies) {
  url <- 'http://www.imdb.com/chart/toptv/i'
  webpage <- read_html(url)
  cast_html <- html_nodes(webpage,'#titleCast .itemprop')
  castList<- html_text(cast_html)
}

,并提供:

example <- data.frame(matrix(NA, ncol=4, nrow=4))
names(example) <- c("reason_code", "d_01", "d_02", "d_03")
example$reason_code <- c("d_01, d_03", "d_01", "d_02", "d_02, d_03")

reason_code d_01 d_02 d_03 1 d_01, d_03 NA NA NA 2 d_01 NA NA NA 3 d_02 NA NA NA 4 d_02, d_03 NA NA NA 列有时会包含多个原因代码。我为每个原因代码创建了一个单独的列,并希望在reason_code列中搜索列名并返回逻辑以指示其存在,如下所示:

reason_code

给予:

library(stringr)

example$d_01 <- str_detect(example$reason_code, "d_01")

我的真实数据有更多的原因代码,因此我想知道如何使用函数迭代每个列,在 reason_code d_01 d_02 d_03 1 d_01, d_03 TRUE NA NA 2 d_01 TRUE NA NA 3 d_02 FALSE NA NA 4 d_02, d_03 FALSE NA NA 列的每一行中搜索列名并返回在转到下一列之前reason_codeTRUE

P.S。 stackoverflow A.I.告诉我。我的头衔可能会被低估或关闭,但我不知道如何解释我的简洁和准确。我希望这个例子能说清楚。

1 个答案:

答案 0 :(得分:0)

我们可以使用UdpSocket遍历列并应用lapply来检查字符串是否存在。

str_detect

我们也可以从第一列开始。在这里,我演示了如何仅从第一列(library(stringr) example[, -1] <- lapply(names(example[, -1]), function(x) str_detect(example$reason_code, x)) example # reason_code d_01 d_02 d_03 # 1 d_01, d_03 TRUE FALSE TRUE # 2 d_01 TRUE FALSE FALSE # 3 d_02 FALSE TRUE FALSE # 4 d_02, d_03 FALSE TRUE TRUE )创建所需的输出(example4)。

example2