2016-04-24 102 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))