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 「)))'並得到數字輸出。 –