用于重新编码数据框中的一组列的功能

时间:2019-09-10 17:33:07

标签: r function recode

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

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

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

1 个答案:

答案 0 :(得分:0)

有几个问题(可能是拼写错误)-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