首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查行是否包含另一列中的子字符串,打印值(R编程)

检查行是否包含另一列中的子字符串,打印值(R编程)
EN

Stack Overflow用户
提问于 2022-02-04 03:47:34
回答 2查看 25关注 0票数 0

目标:

我正在查看示例Twitter数据,并检查"Tweet"列中的数据是否包含单词"yo creo." (如果tweet包含"yo creo," ),我希望在列"Subject Expression"中打印"1“。

错误:

我正在接收带有有效下标向量的错误:必须子集列。x有错误的类型logical。ℹ它必须是数字或字符。

这里是我的代码:

代码语言:javascript
复制
#Read in data
MyData <-read.csv("/Users/mydata/Desktop/MyData.csv")

#Append subject expression column to dataframe
MyData$SubjectExpression <- ""

#Count instances of subject expression using select
MyData%>%
  mutate(SubjectExpression)= 
  case_when(
    select(MyData, Tweet, contains("yo creo") == '1')
  )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-04 03:53:51

你有几个问题。

  • mutate语法是data %>% mutate(column = value) --您需要将新列的定义保存在mutate的().
  • Inside多数dplyr函数中,包括可以直接使用列名和不加引号的mutate()。您不需要使用列( others)
  • case_when()是为了保留某些列,删除test_1 ~ value_1, test_2 ~ value_2
  • contains()参数语法是专门为列名而设的),为了检测列/向量中是否存在字符串,我们将使用stringr::str_detect
  • mutate()可以创建全新的列。您不需要使用MyData$SubjectExpression <- ""初始化列。你应该删除这一行。

如果做了所有这些改变,我们就会明白:

代码语言:javascript
复制
MyData%>%
  mutate(SubjectExpression = 
    case_when(
      stringr::str_detect(Tweet, "yo creo") ~ 1,
      TRUE ~ 0
    )
  )
票数 0
EN

Stack Overflow用户

发布于 2022-02-04 03:59:04

基于基Rgrepl替代方案

代码语言:javascript
复制
MyData$SubjectExpression <- grepl("yo creo", MyData$Tweet)*1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70981211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档