0
我想重新编码基于已经存在的变量创建新的变量。下面的代码就是我想到的。有没有更好的方法来做到这一点?例如,我必须事先创建单独的矩阵,还是可以轻松地在我现有的数据集中创建新变量?重新编码多个变量
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
谢谢!奇迹般有效! –
围绕函数写作as.data.frame(f(dat [,rec]))也会将变量转换为数字,因为由于某种原因您提供的函数会返回带有字符输入的矩阵。 –
这很奇怪。我用'dat = matrix(runif(40)* 5,ncol = 4,dimnames = list(1:10,c(“col1”,“col2”,“col3”,“col4 “)))'并得到数字输出。 –