我有一个名为data的数据格式。它的一个列是data$activity。
data$activity = c("eat", "sing", "dance", "sing", "eat and shop", "shop", "drinks",...)我希望将data$activity列中的特定值替换为“陪伴”(string),并且这些特定值存储在以下向量中:
leisure = c("eat", "drinks", "shop", "eat and shop")我试过以下几种方法
data$activity[data$activity== leisure] <- "Companionship"
#to replace values in the 'leisure' vector that are found in data$activity, with the string, 'Companionship'但是错误是:Warning in data$activity == leisure : longer object length is not a multiple of shorter object length
发布于 2022-02-28 04:57:49
使用基本R,我们可以创建要替换的搜索项(即"eat|drinks|shop|eat and shop")。|的意思是“或”,所以我们会寻找吃或喝或.等等,如果我们找到了这些条款,那么我们将用Companionship取代它们。
data$activity <- gsub(paste(leisure, collapse = "|"), "Companionship", data$activity)
activity
1 Companionship
2 sing
3 dance
4 sing
5 Companionship
6 Companionship
7 Companionship或使用tidyverse
library(tidyverse)
data %>%
mutate(activity = str_replace_all(activity, paste(leisure, collapse = "|", "$", sep = ""), "Companionship"))或者使用您的方法,您只需要使用%in%而不是==,因为您希望匹配leisure中的任何值。
data$activity[data$activity %in% leisure] <- "Companionship"发布于 2022-02-28 05:02:36
这对我来说是有用的:
library(stringr)
data = data.frame(activity = c("eat", "sing", "dance", "sing", "eat and shop", "shop", "drinks"))
leisure = c("eat", "drinks", "shop", "eat and shop")
data[str_detect(data$activity, pattern = paste0(leisure,collapse = "|")) , "activity"] <- "Companionship"
data
# activity
# 1 Companionship
# 2 sing
# 3 dance
# 4 sing
# 5 Companionship
# 6 Companionship
# 7 Companionshiphttps://stackoverflow.com/questions/71290711
复制相似问题