簡體   English   中英

R:如何將因子轉換為數值?

[英]R: How to convert factors into numeric for a DATA FRAME?

我想將因子轉換為數值。 我知道這是一個常見問題解答,我已經嘗試過as.numeric(levels(f))[f]as.numeric(as.character(f)) 但這無濟於事,因為我想將df的所有列(超過1000和所有類型因子)轉換為數值。 我怎樣才能做到這一點?

我們可以試試

 yourdat[] <- lapply(yourdat, function(x) if(is.factor(x)) as.numeric(levels(x))[x]
                              else x)

嘗試這個:

for(name in names(df)){
    if(is.factor(df[[name]])){
        class(df[[name]]) <- "numeric"
        #df[[name]] <- as.numeric(df[[name]])
    }
}

在上述解決方案中,您可以將df[[name]] <- as.numeric(df[[name]])替換class(df[[name]]) <- "numeric" 兩者都會給出相同的結果。

例:

mtcars_copy <- data.frame(mpg = mtcars$mpg, cyl = mtcars$cyl, disp = as.factor(mtcars$disp))

str(mtcars_copy)
## 'data.frame':    32 obs. of  3 variables:
## $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
## $ disp: Factor w/ 27 levels "71.1","75.7",..: 13 13 6 16 23 15 23 12 10 14 ...

for(name in names(mtcars_copy)){
    if(is.factor(mtcars_copy[[name]])){
        mtcars_copy[[name]]) <- as.numeric(mtcars_copy[[name]])
    }
}

class(mtcars_copy$disp)
## [1] "integer"

str(mtcars_copy)
## 'data.frame':    32 obs. of  3 variables:
## $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
## $ disp: int  13 13 6 16 23 15 23 12 10 14 ...

numeric類是許多類的集合。 integerdouble是這些子類中的兩個。 R根據要求自動在不同的數字類之間轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM