2016-04-24 62 views
0

我想將因子列轉換爲數字列。我試過這個代碼:df$col_name= as.numeric(as.character(df$col_name))。 但是當我使用這段代碼時,它使我只有一個只有NA值的列。我也嘗試這種代碼:df$Col_name <- as.character(df$Col_name)它給出類似的標號列:1,2,2,3,3,4,5,6,6,而我有以下數列:10,3;11,4;12,4;18,4我無法將因子列轉換爲R中的數字列

有誰現在我有代碼使用?

+1

請出示的'$ DF col_name' – akrun

+1

是吧'col_name'或'Col_name'的dput? –

+0

我已更改名稱以便於理解。我不使用兩個名字。這是我使用的代碼:Geladen_Amsterdam $ Gem_inkomen_Huishouden = as.numeric(as.character(Geladen_Amsterdam $ Gem_inkomen_Huishouden)) – user5543269

回答

0

你可以這樣做:

col_char=as.character(Geladen_Amsterdam$Gem_inkomen_Huishouden)) 

str_split <- strsplit(col_char,",") 

indices <- which(sapply(1:nrow(Geladen_Amsterdam),function(x){ 
    num <- as.numeric(str_split[[x]]) 

    if (sum(num>0) == 2) 
     return (T) 
    else 
     return (F) 
})) 

這會給你可以用於進一步篩選的指標。

注意,只返回具有值> 0。也就是說,如果說,'10,2' 值時,它會返回其索引這些列的索引,否則如果是像‘7,0’ ,'0,7','0,0'等,它不會返回它的索引。

1

替代,通過.

df <- data.frame(Gem_inkomen_Huishouden=as.factor(c("0,00","13,90"))) 
df$Gem_inkomen_Huishouden <- as.numeric(sub(",", ".", df$Gem_inkomen_Huishouden, fixed=T)) 
df$Gem_inkomen_Huishouden 
# [1] 0.0 13.9 
+0

你先來了:) –

+0

終於....; - > – lukeA

0

逗號的問題。使用GSUB改變逗號點,然後你可以轉換爲數字

a <- as.factor(c("10,3", "11,4", "12,4"," 18,4")) 
a <- gsub("," , ".", a) 
a <- as.numeric(as.character(a))