Запись нескольких переменных
Я пытаюсь перекодировать создание новых переменных на основе уже существующих переменных. Следующий код - это то, что я придумал. Есть ли лучший способ сделать это? Например, мне нужно заранее создать отдельную матрицу или можно легко создавать новые переменные в моем уже существующем наборе данных?
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 ответ
Решение
Вы можете применить векторизованную функцию к фрейму данных следующим образом:
f=function(x) ifelse((x>=0 & x<=1),0,ifelse((x>=2 & x<=4),1,NA))
recmat<-f(dat)
или, может быть
recmat<-f(dat[,rec])
Было бы полезно, если бы вы предоставили пример того, что dat
может выглядеть так.