- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看似很小的问题。我想将 mutate_all()
与 case_when()
结合使用。示例数据框:
tbl <- tibble(
x = c(0, 1, 2, 3, NA),
y = c(0, 1, NA, 2, 3),
z = c(0, NA, 1, 2, 3),
date = rep(today(), 5)
)
我首先制作了另一个数据框,用以下代码将所有 NA 替换为零,将值替换为 1。
tbl %>%
mutate_all(
funs(
case_when(
. %>% is.na() ~ 0,
TRUE ~ 1
)))
现在我想用空白 (""
) 替换 NA 值,并保留其他值。但是,我不知道如何以保留列值的方式设置 TRUE 值。
如有任何建议,我们将不胜感激!
最佳答案
要将 NA
保留为 ""
,我们可以使用 tidyr
中的 replace_na
library(dplyr)
library(tidyr)
tbl %>%
mutate_all(replace_na, "")
# A tibble: 5 x 3
# x y z
# <chr> <chr> <chr>
#1 0 0 0
#2 1 1 ""
#3 2 "" 1
#4 3 2 2
#5 "" 3 3
对于 case_when
或 if_else
,我们必须确保 type
是相同的。在这里,当我们插入 ""
时,我们正在转换为 character
,因此请确保其他值也被强制转换为 character
类
tbl %>%
mutate_all(~ case_when(is.na(.) ~ "", TRUE ~ as.character(.)))
如果我们只想使用特定的列,那么我们可以使用mutate_at
tbl %>%
mutate_at(vars(x:y), ~ case_when(is.na(.) ~ "", TRUE ~ as.character(.)))
此外,为了简化 OP 帖子中的代码,可以使用 as.integer
或 +
直接将其强制转换为整数
tbl %>%
mutate_all(~ as.integer(!is.na(.)))
或者如果我们使用case_when
tbl %>%
mutate_all(~ case_when(is.na(.)~ 0, TRUE ~ 1))
关于r - 如何使用 case_when 和 mutate_all 插入变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269151/
我想知道我在这里做错了什么。。我尝试结合使用case_When()和SUMMISE()来获取每个id的摘要,具体取决于每个id的行数。。创建于2023-09-09,Reprex v2.0.2。但我只想
我想知道我在这里做错了什么。。我尝试结合使用case_When()和SUMMISE()来获取每个id的摘要,具体取决于每个id的行数。。创建于2023-09-09,Reprex v2.0.2。但我只想
我想知道我做错了什么。。我尝试结合使用case_When()和SUMMISE()来获取每个id的摘要,具体取决于每个id的行数。。创建于2023-09-09,Reprex v2.0.2。但我只想有:
我想知道我在这里做错了什么。。我尝试结合使用case_When()和SUMMISE()来获取每个id的摘要,具体取决于每个id的行数。。创建于2023-09-09,Reprex v2.0.2。但我只想
我正在尝试在 case_when() 中使用 %in%,但是它不像在 R 中一般那样工作。下面是一个示例。有人可以指导这个实现有什么问题吗? df % mutate(flag=case_when(na
我想将 case_when 应用于数据框中的所有列。 set.seed(1) data 0.5”替换,对于高于 1 的列,我想用“>1”替换。 我试过 case_when,但似乎我必须指定像 x 和
我正在处理以下需要使用 case_when 的问题。但是,我遇到了错误消息 Error: must be a logical vector, not a double vector 因为替换的列不是同
这是我的虚拟数据: df 1 0.200 a blue 2 1.99 b blue 3 0.663 c blue 4 1.79 d red 5 3.
假设我想根据多个其他变量中的条件创建一个新变量,并且每个变量的条件都相同。我知道我可以使用 case_when(),但我很想知道如果我的条件短语对于每个条件变量都相同,是否可以简化这一步。我还想知道这
我正在尝试检测字符串中是否存在特定的关键字和短语,如果它们存在,我想在新列中发布特定的数字。我的问题是某些字符串有多个关键字,但 case_when 只返回第一个匹配项。有没有办法解决这个问题,或者我
考虑到这是我的数据集 df % mutate( group1_total % group_by(Group) %>% mutate(total = rowSums(sele
考虑到这是我的数据集 df % mutate( group1_total % group_by(Group) %>% mutate(total = rowSums(sele
这失败了: library(tidyverse) myFn 3 ~ letters[1:3], TRUE ~ letters[1:2] ) } myFn(4) # Error: `TRU
我正在尝试根据温度创建许多不同的可能加权方案。 我创建了一个数据框,其中包含 8 个向量的所有可能组合(每个向量代表一个温度范围)。所以数据框的列是特定的温度范围,行是权重。 我想将温度范围作为参数传
这个问题在这里已经有了答案: case_when in mutate pipe (6 个回答) 5年前关闭。 full % mutate(Title = case_when( Title
我有一个大数据框(下面是一个小样本),我需要根据某些条件将所有以相同前缀开头的列转换为多个列,保留原始变量并将原始后缀携带到新变量。 数据: egp % mutate(across(contain
与Tidy evaluation programming with dplyr::case_when有些相关和 Making tidyeval function inside case_when ,我
我按标识符分组(标识符可能有多行),然后尝试使用 group_by 为每个标识符创建一个唯一的行+ summarize与 case_when .这个想法是,如果有 2 行或更多行,则返回单个预设值,否
在进行数据分析时,有时需要将值重新编码为因子以进行组分析。我想保持因子的顺序与 case_when 中指定的转换顺序相同.在这种情况下,订单应该是 "Excellent" "Good" "Fail"
我希望能够使用 dplyr的 case_when以编程方式替换基础 R cut()功能。 目前, case_when 可以通过 NSE 与外部参数一起使用,例如: library(dplyr) lib
我是一名优秀的程序员,十分优秀!