我想将因子列转换为数字列。我试过这段代码: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
等。
现在有人要使用哪些代码?
答案 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))