2016-12-30 105 views
0

我是R新手。我有一個具有> 10000級別的因子對象。大多數這些級別都是我想要轉換爲數字的數字,但有幾個級別包含我不想觸及的說明。R:將因子的某些級別轉換爲數字

是否有一種很好的方法來隔離要轉換爲數字的因子的相關級別? as.numeric()會是一個不錯的選擇嗎?

非常感謝!

回答

2

由於我們不能有多個類的列/載體,一個建議是子集僅numeric元件和將其轉換回numeric使用as.numeric(as.character(

i1 <- grepl("^[0-9.]+$", v1) 
v2 <- as.numeric(as.character(v1[i1])) 
0
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"