这个问题是关于在一个大的数据集中重新编码多个变量。由于数据很大,需要对许多变量进行重新编码,所以我在寻找一种更灵活的方法来调用所有相关变量并执行重新编码。关于重新编码有许多已解决的问题(例如。
Recoding multiple variables in R
,但这些都不符合这个问题的具体情况。以下是数据示例:
df<-data.frame("id"=c(1:5),
"ax1"=c(2,1,4,3,4),
"ax2"=c(7,3,6,2,2),
"bx1"=c(3,5,7,1,2),
"bx2"=c(1,3,1,5,2),
"cx1"=c(1,1,7,1,6),
"cx2"=c(3,9,5,5,4))
例如,我想重新编码
ax1
我是说,
bx1
和
cx1
. 对于这些变量,我想分别将1、2、3、4重新编码为0、1、1、0,并将其重新编码为
NA
否则我试着用“dplyr”软件包
df <- df %>%
mutate_at( vars(ends_with("x1")),
list(~ ifelse( . == 1, 0, ifelse(.== 2, 1, ifelse(.==3, 1, ifelse(.==4, 0,NA))))))
然而,这并不能产生预期的产出。预期的产出看起来像
id ax1 ax2 bx1 bx2 cx1 cx2
1 1 1 7 1 1 0 3
2 2 0 3 NA 3 0 9
3 3 0 6 NA 1 NA 5
4 4 1 2 0 5 0 5
5 5 0 2 1 2 NA 4