gpt4 book ai didi

r - 一起使用 recode 和 case_when

转载 作者:行者123 更新时间:2023-12-04 12:33:03 25 4
gpt4 key购买 nike

表 1$subject 包含变量“生物学”、“化学”和“物理学”。
对于表 2,我想重新编码,将所有生物/化学实例替换为 1,将物理的所有实例替换为 0。

我尝试了以下代码,因为我相信使用 recode 和 case_when 命令可以实现这一点:

    Table2 <- recode(Table1, case_when(
.$subject <= "biology" ~ 1,
.$subject <= "chemistry" ~ 1,
.$subject <= "physics" ~ 0))

目前,我收到一条错误消息,指出“case_when 必须是双面公式,而不是逻辑公式”。我是 R 的新手,所以我不太确定我做错了什么。如果有人有任何想法,真的很感激!

最佳答案

两者 recode case_when 操作向量,而不是数据帧。所以要创建一个新的数据框,你需要先调用 mutate ,然后在 mutate 内使用 recodecase_when创建新列(或覆盖现有列)。

(此外,从最新的 dplyr 版本开始,您在使用 .$ 时不再需要使用 case_when )


library(tibble)
library(dplyr)

df <- tribble(
~subject,
"chemistry",
"biology",
"physics"
)

df %>%
mutate(subject2 = case_when(
subject == "chemistry" ~ 1,
subject == "biology" ~ 1,
subject == "physics" ~ 2,
))

#> # A tibble: 3 x 2
#> subject subject2
#> <chr> <dbl>
#> 1 chemistry 1
#> 2 biology 1
#> 3 physics 2

df %>%
mutate(subject2 = recode(
subject,
"chemistry" = 1,
"biology" = 1,
"physics" = 2,
))

#> # A tibble: 3 x 2
#> subject subject2
#> <chr> <dbl>
#> 1 chemistry 1
#> 2 biology 1
#> 3 physics 2

关于r - 一起使用 recode 和 case_when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47291039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com