我中的R的函數打開因素數字:R於數據幀列應用功能
as.numeric.factor <- function(x) {as.numeric(levels(x))[x]}
和我有一個由兩個因素,數字和其它類型的數據的數據幀一個。 我想在整個數據框上一次應用上述函數,將所有因子轉換爲數字類型列。 有什麼想法? 謝謝
我中的R的函數打開因素數字:R於數據幀列應用功能
as.numeric.factor <- function(x) {as.numeric(levels(x))[x]}
和我有一個由兩個因素,數字和其它類型的數據的數據幀一個。 我想在整個數據框上一次應用上述函數,將所有因子轉換爲數字類型列。 有什麼想法? 謝謝
一種選擇是:
dat[] <- lapply(dat, function(x) if(is.factor(x)) as.numeric(levels(x))[x] else x)
您可以檢查列是否爲factor
或者不是is.factor
和sapply
。使用它作爲索引來過濾掉這些列,並通過lapply
循環中的as.numeric.factor
函數將列轉換爲「數字」。
indx <- sapply(dat, is.factor)
dat[indx] <- lapply(dat[indx], as.numeric.factor)
你也可以應用功能不使用子集(但如果將它放在一個子集,會更快)
爲了防止列轉換爲「因素」,你可以指定stringsAsFactors=FALSE
參數或colClasses
參數在read.table/read.csv
範圍內,我會想象這些列至少有一個非數字組件,它在讀取數據集時自動將其轉換爲factor
。