我有一个数据框(下面的示例),该数据框在多天内对问卷进行了回复。
> df %>%
mutate (Sigma_Bucket_Q1 = if_else(Sigma_Q1 >= Median_Sigma_Q1,
"Above Median Volatility", "Below Median Volatility"))
# A tibble: 19 x 12
UserId Days_From_First_Use Q1 Q2 Q3 Sigma_Q1 Sigma_Q2 Sigma_Q3 Median_Sigma_Q1 Median_Sigma_Q2 Median_Sigma_Q3 Sigma_Bucket_Q1
<fct> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
1 A 0 3 2 1 1.10 0.837 0.548 1.45 1.59 1.53 Below Median Volatility
2 A 1 1 0 0 1.10 0.837 0.548 1.45 1.59 1.53 Below Median Volatility
3 A 2 1 1 0 1.10 0.837 0.548 1.45 1.59 1.53 Below Median Volatility
4 A 3 0 2 0 1.10 0.837 0.548 1.45 1.59 1.53 Below Median Volatility
5 A 4 1 1 1 1.10 0.837 0.548 1.45 1.59 1.53 Below Median Volatility
6 B 0 4 8 2 1.26 2.5 2.06 1.45 1.59 1.53 Below Median Volatility
7 B 2 2 2 1 1.26 2.5 2.06 1.45 1.59 1.53 Below Median Volatility
8 B 4 5 6 5 1.26 2.5 2.06 1.45 1.59 1.53 Below Median Volatility
9 B 5 4 5 5 1.26 2.5 2.06 1.45 1.59 1.53 Below Median Volatility
10 C 0 5 7 2 1.64 1.87 1 1.45 1.59 1.53 Above Median Volatility
11 C 1 2 2 2 1.64 1.87 1 1.45 1.59 1.53 Above Median Volatility
12 C 2 5 5 4 1.64 1.87 1 1.45 1.59 1.53 Above Median Volatility
13 C 3 6 5 3 1.64 1.87 1 1.45 1.59 1.53 Above Median Volatility
14 C 4 6 6 4 1.64 1.87 1 1.45 1.59 1.53 Above Median Volatility
15 D 0 5 3 5 2.35 1.30 2.30 1.45 1.59 1.53 Above Median Volatility
16 D 1 5 3 4 2.35 1.30 2.30 1.45 1.59 1.53 Above Median Volatility
17 D 2 4 2 6 2.35 1.30 2.30 1.45 1.59 1.53 Above Median Volatility
18 D 3 0 0 1 2.35 1.30 2.30 1.45 1.59 1.53 Above Median Volatility
19 D 4 1 1 1 2.35 1.30 2.30 1.45 1.59 1.53 Above Median Volatility
列Q1
,Q2
并Q3
有反应,而Sigma_Q1
,Sigma_Q2
且Sigma Q3
有时间系列中的每个对象针对每个问题提供响应的标准偏差。Median_Sigma_1
,Median_Sigma_2
以及Median_Sigma_3
具有跨学科他们对反应的中位数标准偏差Q1
,Q2
和Q3
。我想根据是否将每个主题分类为“高于中位数”或“低于中位数波动”主题Sigma_Q1 > Median_Sigma_Q1
。我的表达Sigma_Bucket_Q1
效果很好。它可以在小标题之前看到。
但是,当我尝试将其概括为同时生成所有Sigma_Bucket时(我的实际问题有21个这样的名称),我遇到了一个问题。我试过了:
df %>%
mutate (across(all_of(paste0("Sigma_Bucket_", c("Q1", "Q2", "Q3")) = if_else(paste0("Sigma_", {.col}) >= paste0("Median_Sigma_", {.col}),
"Above Median Volatility", "Below Median Volatility")))
我收到一条神秘的错误消息,无法确定需要解决的问题:
> df %>%
+ mutate (across(all_of(paste0("Sigma_Bucket_", c("Q1", "Q2", "Q3")) = if_else(paste0("Sigma_", {.col}) >= paste0("Median_Sigma_", {.col}),
Error: unexpected '=' in:
"df %>%
mutate (across(all_of(paste0("Sigma_Bucket_", c("Q1", "Q2", "Q3")) ="
> "Above Median Volatility", "Below Median Volatility")))
Error: unexpected ',' in " "Above Median Volatility","
如何修改我的陈述以执行所有3列(实际问题中全部21列)而不必为每个问题写一行?
浏览关于StackOverflow的各种答案表明,这mutate_if
可能是解决方案的基础,但是我不知道如何在此特定设置中使用它。
在此先感谢您的协助
托马斯·菲利普斯
这是使用的解决方案map
:
map2_df(
df %>% select(starts_with("Sigma_Q")),
df %>% select(starts_with("Median_Sigma_Q")),
~if_else(.x >= .y, "Above Median Volatility", "Below Median Volatility")) %>%
rename_with(~str_replace(.x, "Sigma", "Sigma_Bucket"))
输出:
# A tibble: 19 x 3
Sigma_Bucket_Q1 Sigma_Bucket_Q2 Sigma_Bucket_Q3
<chr> <chr> <chr>
1 Below Median Volatility Below Median Volatility Below Median Volatility
2 Below Median Volatility Below Median Volatility Below Median Volatility
3 Below Median Volatility Below Median Volatility Below Median Volatility
4 Below Median Volatility Below Median Volatility Below Median Volatility
5 Below Median Volatility Below Median Volatility Below Median Volatility
6 Below Median Volatility Above Median Volatility Above Median Volatility
7 Below Median Volatility Above Median Volatility Above Median Volatility
8 Below Median Volatility Above Median Volatility Above Median Volatility
9 Below Median Volatility Above Median Volatility Above Median Volatility
10 Above Median Volatility Above Median Volatility Below Median Volatility
11 Above Median Volatility Above Median Volatility Below Median Volatility
12 Above Median Volatility Above Median Volatility Below Median Volatility
13 Above Median Volatility Above Median Volatility Below Median Volatility
14 Above Median Volatility Above Median Volatility Below Median Volatility
15 Above Median Volatility Below Median Volatility Above Median Volatility
16 Above Median Volatility Below Median Volatility Above Median Volatility
17 Above Median Volatility Below Median Volatility Above Median Volatility
18 Above Median Volatility Below Median Volatility Above Median Volatility
19 Above Median Volatility Below Median Volatility Above Median Volatility
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句