目标:
我正在查看示例Twitter数据,并检查"Tweet"列中的数据是否包含单词"yo creo." (如果tweet包含"yo creo," ),我希望在列"Subject Expression"中打印"1“。
错误:
我正在接收带有有效下标向量的错误:必须子集列。x有错误的类型logical。ℹ它必须是数字或字符。
这里是我的代码:
#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')
)发布于 2022-02-04 03:53:51
你有几个问题。
mutate语法是data %>% mutate(column = value) --您需要将新列的定义保存在mutate的().dplyr函数中,包括可以直接使用列名和不加引号的mutate()。您不需要使用列( others)case_when()是为了保留某些列,删除test_1 ~ value_1, test_2 ~ value_2contains()参数语法是专门为列名而设的),为了检测列/向量中是否存在字符串,我们将使用stringr::str_detectmutate()可以创建全新的列。您不需要使用MyData$SubjectExpression <- ""初始化列。你应该删除这一行。如果做了所有这些改变,我们就会明白:
MyData%>%
mutate(SubjectExpression =
case_when(
stringr::str_detect(Tweet, "yo creo") ~ 1,
TRUE ~ 0
)
)发布于 2022-02-04 03:59:04
基于基R的grepl替代方案
MyData$SubjectExpression <- grepl("yo creo", MyData$Tweet)*1https://stackoverflow.com/questions/70981211
复制相似问题