我无法将因子列转换为R中的数字列

时间:2016-04-24 11:20:09

标签: r converter

我想将因子列转换为数字列。我试过这段代码: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等。

现在有人要使用哪些代码?

3 个答案:

答案 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

答案 1 :(得分: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)
}))

这将为您提供可用于进一步过滤的索引。

请注意,它仅返回值>&gt;的列的索引。 0.也就是说,如果说,'10,2'是值,它将返回其索引,否则如果它像“7,0”,“0,7”,“0,0”等,它就赢了t返回它的索引。

答案 2 :(得分:0)

逗号就是问题所在。使用gsub将逗号更改为点,然后您可以转换为数字

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