Я пытаюсь перекодировать создавать новые переменные на основе уже существующих переменных. Следующий код - это то, что я придумал. Есть ли лучший способ сделать это? Например, мне нужно заранее создать отдельную матрицу или легко создать новые переменные в уже существующем наборе данных?Перекодирование нескольких переменных
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
Первые строки Дат выглядит следующим образом:
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 ")))' и получил числовой вывод. –