1

1 から 5 までの値を含むさまざまな変数を持つデータフレームがあります。5 が 1 になり、その逆 (x=6-x) になるようにいくつかの変数を再コーディングしたいと考えています。データフレームでこのように再コード化される変数のリストを定義したいと思います。

を使用した私のアプローチは次のとおりlapplyです。私はまだそれを本当に理解していません。

  #generate example-dataset
    var1<-sample(1:5,100,rep=TRUE)
    var2<-sample(1:5,100,rep=TRUE)
    var3<-sample(1:5,100,rep=TRUE)
    dat<-as.data.frame(cbind(var1,var2,var3))

    recode.list<-c("var1","var3")  
    recode.function<- function(x){          
    x=6-x
     }
    lapply(recode.list,recode.function,data=dat)
4

3 に答える 3

6

外部関数やこのためのパッケージは必要ありません。次のように、で無名関数を使用するだけlapplyです。

df[recode.list] <- lapply(df[recode.list], function(x) 6-x)

を使用[]すると、元のデータセット内のそれらの列だけを直接置き換えることができます。lapplyを使用するだけでデータが名前付き .xml になるため、これが必要ですlist


コメントに記載されているように、実際にはスキップすることもできますlapply:

df[recode.list] <- 6 - df[recode.list] 
于 2014-11-20T13:43:34.303 に答える
1

これを行うオプションは次のdplyrとおりです。

recode.function<- function(x){          
  x <- 6-x 
}

recode.list <- c("var1","var3") 

require(dplyr)
df %>% mutate_each_(funs(recode.function), recode.list)

#    var1 var2 var3
#1      2    2    4
#2      3    3    3
#3      3    5    2
#4      3    3    2
#5      4    3    3
#6      5    4    1
#...
于 2014-11-20T13:40:53.623 に答える