首页 > 解决方案 > 重新编码数据框中的一组列

问题描述

我在数据框中有一组列,我想通过以下方式重新编码(这里是一个带有一个变量的示例):

completed_survey$little_control<-car:: recode(completed_survey$little_control, 
"1=7;2=6;3=4;4=4;5=3;6=2;7=1")

为了提高效率并且不对所有不同的变量重复相同的代码,我正在考虑使用一个函数,并且我正在考虑这样的事情:

recoding <- function(x) { 
car :: recode(completed_survey$., "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
} 

但是,一旦应用于数据框中的变量,就会导致以下错误:

Error in `$<-.data.frame`(`*tmp*`, little_control, value = numeric(0)) : 
  replacement has 0 rows, data has 139334

我想这是功能规范中的问题。如何引用数据框中的任何通用列变量,以便应用重新编码功能?

标签: rfunctionrecode

解决方案


有几个问题(可能是拼写错误)-1)不必要的空间,2)函数内部没有使用函数参数。下面的函数有两个参数 - 一个用于数据,下一个用于作为字符串的列名

recoding <- function(data, colName) { 
    car::recode(data[[colName]], "1=7;2=6;3=4;4=4;5=3;6=2;7=1")
  } 

recoding(completed_survey, "little_control")

并有一个可重复的例子

recoding(mtcars, "carb")
#[1] 4 4 7 7 6 7 4 6 6 4 4 4 4 4 4 4 4 7 6 7 7 6 6 4 6 7 6 6 4 2 8 6

推荐阅读