- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,我喜欢根据这些值的概率分布来估算其中一个值。让我们先做一些可重现的例子
library(tidyverse)
library(janitor)
dummy1 <- runif(5000, 0, 1)
dummy11 <- case_when(
dummy1 < 0.776 ~ 1,
dummy1 < 0.776 + 0.124 ~ 2,
TRUE ~ 5)
df1 <- tibble(q1 = dummy11)
df1 %>% tabyl(q1)
q1 n percent
1 3888 0.7776
2 605 0.1210
5 507 0.1014
mutate
和
sample
像这样在值 1 和 2 之间共享 value= 5:
df1 %>%
mutate(q1 = case_when(q1 == 5 ~ sample(
2,
length(q1),
prob = c(0.7776, 0.1210),
replace = TRUE
),
TRUE ~ as.integer(q1))
)
q1 n percent
1 4322 0.8644
2 678 0.1356
tidyeval
一起使用 tidyverse 的函数。 , 像这样
my_impute <- function(.data, .prob_var, ...) {
.prob_var <- enquo(.prob_var)
.data %>%
sample(2, prob=c(!!.prob_var), replace = TRUE)
}
# running on data
df1 %>%
mutate(q1 = case_when(q1 == 5 ~ !!my_impute(q1),
TRUE ~ as.integer(q1))
)
Error in eval_tidy(pair$lhs, env = default_env) : object 'q1' not found
最佳答案
我们需要 prob
从 tabyl
生成的“百分比”列中的值,所以函数可以修改为
library(janitor)
library(dplyr)
my_impute <- function(.data, .prob_var, vals, ...) {
.prob_var = enquo(.prob_var)
.prob_vals <- .data %>%
janitor::tabyl(!!.prob_var) %>%
filter(!!.prob_var %in% vals) %>%
pull(percent)
.data %>%
mutate(!! .prob_var := case_when(!! .prob_var == 5 ~
sample(
2,
n(),
prob = .prob_vals,
replace = TRUE
),
TRUE ~ as.integer(q1))
)
}
df1 %>%
my_impute(q1, vals = 1:2) %>%
tabyl(q1)
# q1 n percent
# 1 4285 0.857
# 2 715 0.143
关于r - 在 case_when 中制作 tidyeval 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58418699/
我想知道我在这里做错了什么。。我尝试结合使用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
我是一名优秀的程序员,十分优秀!