如何使用 mutate_all 并使用 dplyr 正确地一起重新编码?
How to use mutate_all and recode together properly using dplyr?
我一直在尝试对数据集中的所有变量使用重新编码的 dplyr 变体,并结合 mutate_all,但它没有产生预期的输出。我找到的其他答案没有解决这个问题(例如 )
这是我尝试过的:
library(tidyverse)
library(car)
# Create sample data
df <- data_frame(a = c("Yes","Maybe","No","Yes"), b = c("No","Maybe","Yes","Yes"))
# Using dplyr::recode
df %>% mutate_all(funs(recode(., `1` = "Yes", `0` = "No", `NA` = "Maybe")))
对值没有影响:
# A tibble: 4 × 2
a b
<chr> <chr>
1 Yes No
2 Maybe Maybe
3 No Yes
4 Yes Yes
我想要的可以使用car::Recode复制:
# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
这是期望的结果:
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
您在 dplyr::recode
中反转了 'key/values'。这对我有用:
df %>% mutate_all(funs(recode(., Yes = 1L, No = 0L, Maybe = NA_integer_)))
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
请注意,如果您不指定 NA
的类型,则会引发错误。
您也可以使用带引号或不带引号的值(例如:Yes
或 'Yes'
都有效)
我一直在尝试对数据集中的所有变量使用重新编码的 dplyr 变体,并结合 mutate_all,但它没有产生预期的输出。我找到的其他答案没有解决这个问题(例如
这是我尝试过的:
library(tidyverse)
library(car)
# Create sample data
df <- data_frame(a = c("Yes","Maybe","No","Yes"), b = c("No","Maybe","Yes","Yes"))
# Using dplyr::recode
df %>% mutate_all(funs(recode(., `1` = "Yes", `0` = "No", `NA` = "Maybe")))
对值没有影响:
# A tibble: 4 × 2
a b
<chr> <chr>
1 Yes No
2 Maybe Maybe
3 No Yes
4 Yes Yes
我想要的可以使用car::Recode复制:
# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
这是期望的结果:
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
您在 dplyr::recode
中反转了 'key/values'。这对我有用:
df %>% mutate_all(funs(recode(., Yes = 1L, No = 0L, Maybe = NA_integer_)))
# A tibble: 4 × 2
a b
<dbl> <dbl>
1 1 0
2 NA NA
3 0 1
4 1 1
请注意,如果您不指定 NA
的类型,则会引发错误。
您也可以使用带引号或不带引号的值(例如:Yes
或 'Yes'
都有效)