r - 如何使用dplyr重新编码(和反向编码)列中的变量

标签 r dplyr

我在2013年最后一次使用R后再次使用R。我已经习惯于使用dplyr,但是我遇到了一个简单任务的问题。
我有一张 table ,看起来像

Participant Q1       Q2      Q3     Q4       Q5
1           agree  neutral   NA    Disagree  Agree
2           neutral agree    NA     NA       NA

我的目标
   Participant Q1       Q2      Q3     Q4       Q5
    1           3       2       NA      1       3
    2           2       1       NA     NA       NA

我希望能够将Q1:Q5列的分类值更改为数值,但是我看到的对dplyr使用recode的所有示例都适用于行和无列。 (我可能在示例中缺少了一些内容)。然后,我希望能够选择列Q1和Q2并对其进行反向编码。

我正在尝试学习在dplyr中做到这一点

谢谢

最佳答案

我们可以在base R中完成此操作,而无需使用任何程序包。创建一个名为vector('v1')的查找,在列上循环并使用该向量更改列中的值

v1 <- setNames(c(1:3, 3), c("Disagree", "neutral", "agree", "Agree"))
df1[-1] <- lapply(df1[-1], function(x) if(any(!is.na(x))) v1[x] else NA)
df1 
#  Participant Q1 Q2 Q3 Q4 Q5
#1           1  3  2 NA  1  3
#2           2  2  3 NA NA NA

数据
df1 <- structure(list(Participant = 1:2, Q1 = c("agree", "neutral"), 
Q2 = c("neutral", "agree"), Q3 = c(NA, NA), Q4 = c("Disagree", 
NA), Q5 = c("Agree", NA)), .Names = c("Participant", "Q1", 
"Q2", "Q3", "Q4", "Q5"), class = "data.frame", row.names = c(NA, -2L))

关于r - 如何使用dplyr重新编码(和反向编码)列中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38088328/

相关文章:

r - dplyr mutate stringr str_detect 具有多个条件参数和相应的输出

r - 我们如何配置shinyserver开源支持并发用户

r - R : How can I solve it?中的SF包问题

r - 在 R 的纵向情况下,如何根据不同变量的状态对一个变量进行分组?

r - R分组显示所有因子水平的计数,即使在dplyr为零时

r - 如何使用 dplyr::select_if 选择非数字列

r - 如何在 PCA 图周围绘制椭圆?

R 使用 apply() 或 lapply() 等加速 for 循环

json - 除了下面之外,还有其他方法可以将 json.rows 文件加载到 RStudio 中吗?

r - 使用 mutate 一次将函数应用于多个列