重新编码多个变量

时间:2013-08-05 09:15:01

标签: r data-manipulation

我正在尝试根据已有的变量重新编码创建新变量。以下代码是我提出的。有没有更好的方法呢?例如,我是否必须提前创建单独的矩阵,或者可以在我现有的数据集中轻松创建新变量?

rec<-c("col1", "col2", "col3", "col4")

recmat<-as.data.frame(matrix(NA,800, length(rec)))
recmat[, 1:length(rec)][0<=dat[,rec] & 1>=dat[,rec]]<-0
recmat[, 1:length(rec)][2<=dat[,rec] & dat[,rec]<=4]<-1

dat的第一行如下所示:

     col1    col2   col3       col4
1       NA     NA     NA         NA
2       NA     NA     NA         NA
3       NA     NA     NA          1
4        0     NA     NA         NA
5        0     NA     NA         NA
6       NA     NA     NA         NA
7        0      0      0         NA

1 个答案:

答案 0 :(得分:0)

您可以将矢量化函数应用于数据框,如下所示:

f=function(x) ifelse((x>=0 & x<=1),0,ifelse((x>=2 & x<=4),1,NA))
recmat<-f(dat)

或者

recmat<-f(dat[,rec])

如果您提供了dat可能的样子,那将会有所帮助。