【发布时间】:2021-07-19 21:18:17
【问题描述】:
我正在处理一些调查数据,其中一些响应的编码不一致。例如,“我不知道”可以编码为 4、5、97 或 777。我想尽可能高效地将所有这些响应标准化为“77”。我想使用人行横道,并希望避免为发生这种情况的每个变量创建一个新的重新编码命令,如果可能的话,因为有几个。
library(tidyverse)
#df with the inconsistent fourth category
var1 <- c("1", "2", "3", "4")
var2 <- c("1", "2", "3", "5")
var3 <- c("1", "2", "3", "97")
var4 <- c("1", "2", "3", "777")
df <- data.frame(var1, var2, var3, var4)
var <- c("var1", "var2", "var3", "var4")
oldvalue <- c("4", "6", "97", "777")
newvalue <- c("77", "77", "77", "77")
#crosswalk of old values to new values
cw <- data.frame(var, oldvalue, newvalue)
recodevars = cw$var
我尝试过的一些事情如下,虽然我没有任何运气。如果您有任何建议,请告诉我。
rec_all = df %>%
transmute_at(vars(recodevars), funs(recode(., cw$oldvalue = cw$newvalue)))
for(i in recodevars){
rec_all = df %>%
transmute_at(vars(recodevars), funs(ifelse(i == cw$oldval, cw$newval, i)))
}
【问题讨论】: