R:将因子的某些级别转换为数字
问题描述:
我是R新手。我有一个具有> 10000级别的因子对象。大多数这些级别都是我想要转换为数字的数字,但有几个级别包含我不想触及的说明。R:将因子的某些级别转换为数字
是否有一种很好的方法来隔离要转换为数字的因子的相关级别? as.numeric()会是一个不错的选择吗?
非常感谢!
答
由于我们不能有多个类的列/载体,一个建议是子集仅numeric
元件和将其转换回numeric
使用as.numeric(as.character(
i1 <- grepl("^[0-9.]+$", v1)
v2 <- as.numeric(as.character(v1[i1]))
答
a1 <- factor(c(letters[1:3], '1', '2', '3'))
levels(a1)
# [1] "1" "2" "3" "a" "b" "c"
a2 <- a1[1:3]
levels(a2)
# [1] "1" "2" "3" "a" "b" "c"
# using @akrun grepl statement to weed out unused levels
a2 <- factor(a2, levels(a2)[!grepl("^[0-9.]+$", levels(a2))])
levels(a2)
# [1] "a" "b" "c"
# use either @akrun grepl or this droplevels() function
a2 <- droplevels(a2)
# [1] a b c
# Levels: a b c
unclass(a2)
# [1] 1 2 3
# attr(,"levels")
# [1] "a" "b" "c"