- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力寻找以下问题的答案。
我想通过向量搜索 data.frame 中的列。找到匹配项后,我希望利用“搜索向量”的元素来创建新列的新元素。请参阅下面的可重现示例。
colour <- c('red', 'yellow')
a <- c('violet', 'red', 'taupe', 'blue', 'yellow_a', 'yellow_b', 'blue_a', 'red_c')
b <- c('non', 'prim', 'non', 'prim', 'prim', 'prim', 'prim', 'prim')
c <- c(1, 2, 3, 4, 5, 6, 7, 8)
df <- data.frame(a, b, c)
我尝试过以下方法:
df_clean <- df %>% mutate(d = if_else(str_detect(a, colour), colour, NA_character_))
输出:
问题:查看帮助文件时,我无法从“if_else”输出大于 1 的值,我收到以下信息:
Error: Problem with
mutate()
columnd
. ℹd = if_else(rep(str_detect(a, colour), length(colour)), colour, NA_character_)
. xtrue
must be length 16 (length ofcondition
) orone, not 2.
我希望实现:
a <- c('violet', 'red', 'taupe', 'blue', 'yellow_a', 'yellow_b', 'blue_a', 'red_c')
b <- c('non', 'prim', 'non', 'prim', 'prim', 'prim', 'prim', 'prim')
c <- c(1, 2, 3, 4, 5, 6, 7, 8)
d <- c(NA_character_, 'red', NA_character_, NA_character_, 'yellow', 'yellow', NA_character_, 'red')
df_clean <- data.frame(a, b, c, d)
要求:
如果您能帮助我解决此问题或找到替代解决方案,我将不胜感激,但我无法弥补这一差距。我遗漏了一些可能显而易见的东西?
任何帮助将不胜感激!
非常感谢
最佳答案
使用 stringr
包中的 str_extract
的潜在解决方案。
colour <- c('red', 'yellow')
a <- c('violet', 'red', 'taupe', 'blue', 'yellow_a', 'yellow_b', 'blue_a', 'red_c')
b <- c('non', 'prim', 'non', 'prim', 'prim', 'prim', 'prim', 'prim')
c <- c(1, 2, 3, 4, 5, 6, 7, 8)
df <- data.frame(a, b, c)
colour_str <- paste(colour, collapse='|')
df |>
mutate(d = str_extract(a, colour_str))
输出:
a b c d
1 violet non 1 <NA>
2 red prim 2 red
3 taupe non 3 <NA>
4 blue prim 4 <NA>
5 yellow_a prim 5 yellow
6 yellow_b prim 6 yellow
7 blue_a prim 7 <NA>
8 red_c prim 8 red
关于r - if_else 或替代的向量输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70351510/
我正在努力寻找以下问题的答案。 我想通过向量搜索 data.frame 中的列。找到匹配项后,我希望利用“搜索向量”的元素来创建新列的新元素。请参阅下面的可重现示例。 colour % mutate(
我正在努力寻找以下问题的答案。 我想通过向量搜索 data.frame 中的列。找到匹配项后,我希望利用“搜索向量”的元素来创建新列的新元素。请参阅下面的可重现示例。 colour % mutate(
cpp_magic扩展了 C 预处理器通常可以完成的任务。(它是一个头文件,位于 GitHub 上, here 。) IF_ELSE(cond)(, )是一个 super 有用的宏! 如何在 cond
请引用下图 我想在 Ongoing_Fees 表上创建一个 After Insert 触发器,用于更新 VAT 表。但是,在将数据插入 VAT 表之前,应检查特定 Portfolio 的 VAT 字段
我在数据集中创建了不同职位描述的 flag 变量。我想将每个 flag==true 更改为另一个变量的同一行位置。 我已经尝试过 ifelse 和 if_else; 但我所能得到的只是 true 的更
我正在尝试创建一个函数,如果该列的类型为 char,则该函数将数据帧的数据类型转换为 factor,否则我不会更改任何内容。但这里的问题是我可以用 if else 语句做同样的事情,但不能使用 if_
我对Tidyverse相当精通,但始终使用ifelse()而不是dplyr if_else()。我想将此行为切换为默认值,以始终使用dplyr::if_else()并从代码中弃用ifelse()。 有
我有以下数据框: library(dplyr) df % rename_all(funs(stringr::str_replace_all(., "gh", "v"))) 我想结合使用 renam
dplyr具有矢量化条件 if_else和 case_when . 然而,这两者都急切地评估它们可能的输出( true/false 表示 if_else ,case_when 的公式的 RHS ):
我有以下数据框: library(dplyr) df % rename_all(funs(stringr::str_replace_all(., "gh", "v"))) 我想结合使用 renam
我在R中有一个数据框。我的目标是使用if_else语句创建一个新列。如果一行中的值等于字符串"company",则此新列的值将是data列中的值。否则,我想分配给NA值。 我不知道如何实现,下面的代码
我是 C 编程的新手,最近遇到了从 3 个数中找出第二大数的问题。我尝试使用 if...else,但它总是给出最小的数字作为输出。我在这段代码中犯的逻辑错误是什么? #include int main
我正在处理一个有很多时间戳的数据集。我尝试识别一些无效的时间戳并将其设置为 NA。因为 if_else()强制我在两个臂上使用相同的数据类型,我正在使用 as.POSIXct(NA)对此类缺失值进行编
最小示例 - 我收到了 3 个受试者对包含两个问题的调查问卷的 9 个回复: set.seed(1) df % group_by(ID) %>% if_else(FILTER_BY_DAYS_
我是编码世界的新手,刚刚开始学习 javascript。我试图设计一种表格类型的输出,但无法完成它。这就是我想要实现的目标 “一月 - 1 - 第 1 季度”和第二行“2 月 - 2 日 - 第 1
你能帮我解释一下这段代码吗?我对 if_else 中的三个参数特别困惑:runif (n()) % mutate(cut = if_else(runif(n()) % ggplot() +
你能帮我解释一下这段代码吗?我对 if_else 中的三个参数特别困惑:runif (n()) % mutate(cut = if_else(runif(n()) % ggplot() +
我正在尝试解决一个简单的问题。我检查特定条件,如果为真,我插入一个date值,否则插入NA(即留下一个空白单元格)。 为了让它工作,我使用了 if_else 但它顽固地拒绝工作(我已经投入了几个小时阅
我有一个字符变量,它有一些我想用 NA 替换的值(例如“N/A”;“NA”作为文本输入,而不是 R 的 NA 类型;其他文本响应。)我不想要的值替换为 NA 包含数字字符串,因此我尝试使用正则表达式来
问题 如何使用 dplyr 的 if_else() 函数使其输出为函数?使用 base 中的 ifelse() 这很简单,但是使用 if_else() 就会出错。这是有意为之的行为还是我无法正确地做到
我是一名优秀的程序员,十分优秀!