簡體   English   中英

在數據框中將因子和字符轉換為數字

[英]convert factor and character to numeric in a dataframe

我有一個要過濾的數據框。 結構如下:

'dataframe': 45 obs. of 1450 variables:
$ X01493112  :Factor w/ 47 levels "01493112", "0145769",...
..- attr(*, "names")= chr "510130020" "510360002"

我有一種無法過濾的感覺,因為我有因子和字符,但是無法將其轉換為數字。 我努力了:

as.numeric.factor <- function(x) {as.numeric(levels(x))[x]}
df2 <- as.numeric.factor(df1)

以及其他許多轉換,但是當我調用新的df時,我不知道為什么它不起作用

>numeric(0)

使用一些示例數據會有所幫助,但是請嘗試:

df$your_factor_variable_now_numeric <- 
                as.numeric(as.character(df$your_old_factor_variable))

並僅將其用於轉換因子變量,而不用於轉換完整的數據框。 您也可以查看type.convert 如果要轉換數據框中的所有因子,則可以沿線使用

 df[] <- lapply(df, function(x) as.numeric(as.character(x)))

請注意,這將轉換所有因子,如果您的因子不代表數值,則可能不是您想要的。 如果出現不必要的轉換問題,或者數據中包含非數字因素或字符,則以下內容將是適當的:

 numerify <- function(x) if(is.factor(x)) as.numeric(as.character(x)) else x
 df[] <- lapply(df, numerify)

不過,從更一般的角度來看,變量的類型不應阻止您進行過濾,如果使用過濾,則意味着要對數據幀進行子集設置。 但是,類型轉換應使用以上代碼解決。

fun1 <- function(x) as.numeric(as.character(x))
fun2 <- function(x) as.numeric(x)

fac_to_num <- function(y) modifyList(y,lapply(y[sapply(y,is.factor)],fun1))

char_to_num <- function(y) modifyList(y,lapply(y[sapply(y,is.factor)],fun2))

fac_to_num應用於數據中的列以進行系數->數字轉換,將char_to_num應用於字符到數字轉換。

暫無
暫無

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

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