我在2013年最后一次使用它后再次拿起R.我已经习惯了使用dplyr,但是我遇到了一个简单任务的问题.我有一张看起来像的桌子
Participant Q1 Q2 Q3 Q4 Q5
1 agree neutral NA Disagree Agree
2 neutral agree NA NA NA
Run Code Online (Sandbox Code Playgroud)
我的目标
Participant Q1 Q2 Q3 Q4 Q5
1 3 2 NA 1 3
2 2 1 NA NA NA
Run Code Online (Sandbox Code Playgroud)
我希望能够将分类值更改为列Q1:Q5的数值,但我看到的使用dode重新编码的所有示例都适用于行而没有列.(我可能会在示例中遗漏一些内容).然后我希望能够选择Q1和Q2列并对其进行反向编码.
我试图在dplyr中学习如果可能的话
谢谢
我一直在尝试使用recode的dplyr变体,结合mutate_all对数据集中的所有变量,但它不会产生预期的输出.我发现的其他答案没有解决这个问题(例如dplyr中的Recode和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")))
Run Code Online (Sandbox Code Playgroud)
对价值没有影响:
# A tibble: 4 × 2
a b
<chr> <chr>
1 Yes No
2 Maybe Maybe
3 No Yes
4 Yes Yes
Run Code Online (Sandbox Code Playgroud)
我想要的可以用car :: Recode重现:
# Using car::Recode
df %>% mutate_all(funs(Recode(., "'Yes' = 1; 'No' = 0; 'Maybe' = NA")))
Run Code Online (Sandbox Code Playgroud)
这是期望的结果:
# A tibble: 4 × …Run Code Online (Sandbox Code Playgroud)