如何在另一个变量中基于字符/文本创建新变量?

时间:2019-04-19 18:14:51

标签: r string-matching

我是需要一些指导的初学者。

我有一个如下数据框(简化的示例,其中两列是从CSV导入的):

Price | Features
100 | {TV, wifi}
125 | {TV, wifi, "Air conditioning"}
110 | {wifi, "Wheelchair accessible", Sauna}

在此示例中,我要创建一个名为“ TV”的新列。如果将电视列为功能,则此列将指示TRUE;如果未列出电视,则此列将指示FALSE。

Price | Features | TV
100 | {TV, wifi} | TRUE
125 | {TV, wifi, "Air conditioning"} | TRUE
110 | {wifi, "Wheelchair accessible", Elevator} | FALSE

我已经搜索并找到了根据条件(if x = TRUE or x > 0)来执行此操作的示例,但是当我查找变量中存在的字符/短语时,我不清楚如何执行操作。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用grepl进行模式匹配:

tvs <- data.frame(
  Price = c(100, 125, 110),
  Features = c(
    '{TV, wifi}',
    '{TV, wifi, "Air conditioning"}',
    '{wifi, "Wheelchair accessible", Sauna}'
  ),
  stringsAsFactors = FALSE
)

tvs$TV <- grepl("TV", tvs$Features, fixed = TRUE)

所以现在tvs是:

  Price                               Features    TV
1   100                             {TV, wifi}  TRUE
2   125         {TV, wifi, "Air conditioning"}  TRUE
3   110 {wifi, "Wheelchair accessible", Sauna} FALSE