相关疑难解决方法(0)

str_detect R的多个字符串

我想找到多个字符串并将其放在变量中,但是我不断收到错误.

queries <- httpdf %>% filter(str_detect(payload, "create" || "drop" || "select"))
Error: invalid 'x' type in 'x || y'

queries <- httpdf %>% filter(str_detect(payload, "create" | "drop" | "select"))
Error: operations are possible only for numeric, logical or complex types

queries1 <- httpdf %>% filter(str_detect(payload, "create", "drop", "select"))
Error: unused arguments ("drop", "select")
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.还有其他方法可以做到str_detect或者我应该尝试别的吗?我希望它们也出现在同一列中.

string r django-errors

14
推荐指数
2
解决办法
2万
查看次数

将 case_when 与多个向量一起使用

我正在尝试case_when根据两个单独的输入来修改/变异列。用于在右侧创建左侧逻辑和相应输入值的一个。下面提供了一个示例。

library(dplyr)
library(purrr)
library(tibble)

df <- tibble(var = paste0(rep("var", 10), 1:10),
                 label = c("label1", "label2", rep(NA, 7), "label10"))

match_var <- paste0(rep("var", 7), 3:9)
new_labels <- paste0(rep("add_this_label", 7), 3:9)

df %>% 
  mutate(test = map2(match_var , new_labels,
                     ~case_when(
                       var == .x ~ .y,
                       TRUE ~ label
                     )
  ))
Run Code Online (Sandbox Code Playgroud)

我认为问题在于,case_when所有内容都被评估为表达式,但我不完全确定。人们可以手动输入其中的所有 7 行case_when,但我的应用程序要求我在向量match_varsnew_labels很长时完成此操作 - 使得手动输入case_when不可行。

df %>% 
  mutate(label = case_when(
    var == match_var[1] ~ new_labels[1],
    var == match_var[2] ~ new_labels[2],
    var == …
Run Code Online (Sandbox Code Playgroud)

r dplyr

5
推荐指数
1
解决办法
3498
查看次数

case_when 与部分字符串匹配和 contains()

我正在使用一个数据集,其中有许多名为 status1、status2 等的列。在这些列中,它表示某人是否豁免、完整、注册等。

不幸的是,豁免投入并不一致;这是一个示例:

library(dplyr)

problem <- tibble(person = c("Corey", "Sibley", "Justin", "Ruth"),
                  status1 = c("7EXEMPT", "Completed", "Completed", "Pending"),
                  status2 = c("exempt", "Completed", "Completed", "Pending"),
                  status3 = c("EXEMPTED", "Completed", "Completed", "ExempT - 14"))
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 case_when() 来创建一个具有最终状态的新列。如果它说已完成,那么它们就已完成。如果它说豁免但没有说完整,那么他们就豁免了。

重要的部分是我希望我的代码使用 contains("status") 或一些仅针对状态列且不需要全部键入的等效项,并且我希望它只需要部分字符串匹配即可豁免。

至于将 contains 与 case_when 一起使用,我看到了这个示例,但我无法将其应用到我的案例中:mutate with case_when and contains

这是我到目前为止尝试使用的,但正如你可以猜到的,它没有起作用:

library(purrr)
library(dplyr)
library(stringr)
solution <- problem %>%
  mutate(final= case_when(pmap_chr(select(., contains("status")), ~
    any(c(...) == str_detect(., "Exempt") ~ "Exclude",
               TRUE ~ "Complete"
  ))))
Run Code Online (Sandbox Code Playgroud)

这是我想要的最终产品的样子:

solution <- tibble(person = c("Corey", "Sibley", "Justin", "Ruth"), …
Run Code Online (Sandbox Code Playgroud)

string r contains stringr dplyr

2
推荐指数
1
解决办法
4292
查看次数

标签 统计

r ×3

dplyr ×2

string ×2

contains ×1

django-errors ×1

stringr ×1