我在数据集中有几个变量需要进行完全相同的重新编码,还有几个变量需要以不同的方式重新编码。我尝试编写一个函数来帮助我完成这个任务,但是遇到了麻烦。
任何帮助都将不胜感激!谢谢。
library(dplyr)
recode_liberalSupport = function(arg1){
arg1 = recode(arg1, "1=-1;2=1;else=NA")
return(arg1)
}
liberals = c(df$var1, df$var4, df$var8)
for(i in unique(liberals)){
paste(df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport))
}
R Studio 运行了大约 5 分钟,然后给我显示了这个错误信息:
Error in `$<-.data.frame`(`*tmp*`, liberals, value = c(NA_real_, NA_real_, :
replacement has 9 rows, data has 64600
In addition: Warning messages:
1: Unknown or uninitialised column: 'liberals'.
2: In df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport) :
number of items to replace is not a multiple of replacement length
任何帮助都将不胜感激!谢谢。
mutate_at
而不是apply
。我认为你的recode
语法也不正确。提供样本数据是获得有效答案的最佳方式。 - Calum Youunique(liberals)
的值将比liberals
少。 - Punintendedpaste(df$liberals[i] <- sapply(liberals, FUN = recode_liberalSupport))
?(问题出在paste
上。) - Rui Barradas