在数据框列值上使用 str_detect
Using str_detect on data frame column values
我有一个包含字段 'folno' 的数据框 'fol_all'。我有一个名为 string_detect 的列表,其中包含我想在 fol_all 中标记的字符串列表,如果它们存在于 folno 中。
folno <- c('123denied', 'attached_as_test', 'dept_224', 'bulked_up', 'wsd2273')
fol_all <- data.frame(folno)
string_detect <- c('denied', 'attach', 'bulk')
folno <- folno %>%
mutate(folno_flag = case_when(str_detect(folno, string_detect)) == T ~ 1, T == 0)
在此示例中,第 1、2 和 4 行 return 为 1,其余为 0。
我收到以下错误 - 请帮忙。
Error in UseMethod("mutate") :
no applicable method for 'mutate' applied to an object of class "character"
您应该首先创建要应用于该列的 regex-pattern,例如
string_detect <- paste(c('denied', 'attach', 'bulk'), collapse = "|")
然后你需要调整你的case_when
代码:
folno <- fol_all %>%
mutate(folno_flag = case_when(
str_detect(folno, string_detect) ~ 1,
TRUE ~ 0 ))
结果:
folno folno_flag
1 123denied 1
2 attached_as_test 1
3 dept_224 0
4 bulked_up 1
5 wsd2273 0
您不需要 str_detect(folno, string_detect)) == T
,因为该语句基本上是说,如果 str_detect(folno, string_detect))
的计算结果为 True,则为 1,否则为 0。
完整代码:
folno <- c('123denied', 'attached_as_test', 'dept_224', 'bulked_up', 'wsd2273')
fol_all <- data.frame(folno)
string_detect <- paste(c('denied', 'attach', 'bulk'), collapse = "|")
fol_all %>%
mutate(folno_flag = case_when(
str_detect(folno, string_detect) ~ 1,
TRUE ~ 0 ))
我有一个包含字段 'folno' 的数据框 'fol_all'。我有一个名为 string_detect 的列表,其中包含我想在 fol_all 中标记的字符串列表,如果它们存在于 folno 中。
folno <- c('123denied', 'attached_as_test', 'dept_224', 'bulked_up', 'wsd2273')
fol_all <- data.frame(folno)
string_detect <- c('denied', 'attach', 'bulk')
folno <- folno %>%
mutate(folno_flag = case_when(str_detect(folno, string_detect)) == T ~ 1, T == 0)
在此示例中,第 1、2 和 4 行 return 为 1,其余为 0。
我收到以下错误 - 请帮忙。
Error in UseMethod("mutate") :
no applicable method for 'mutate' applied to an object of class "character"
您应该首先创建要应用于该列的 regex-pattern,例如
string_detect <- paste(c('denied', 'attach', 'bulk'), collapse = "|")
然后你需要调整你的case_when
代码:
folno <- fol_all %>%
mutate(folno_flag = case_when(
str_detect(folno, string_detect) ~ 1,
TRUE ~ 0 ))
结果:
folno folno_flag
1 123denied 1
2 attached_as_test 1
3 dept_224 0
4 bulked_up 1
5 wsd2273 0
您不需要 str_detect(folno, string_detect)) == T
,因为该语句基本上是说,如果 str_detect(folno, string_detect))
的计算结果为 True,则为 1,否则为 0。
完整代码:
folno <- c('123denied', 'attached_as_test', 'dept_224', 'bulked_up', 'wsd2273')
fol_all <- data.frame(folno)
string_detect <- paste(c('denied', 'attach', 'bulk'), collapse = "|")
fol_all %>%
mutate(folno_flag = case_when(
str_detect(folno, string_detect) ~ 1,
TRUE ~ 0 ))