2017-01-09 12 views
0

큰 열차 집합에서 임의의 포리스트를해야하지만 더 많은 53 가지 수준의 변수를 사용할 수는 없습니다.요인 변수에서 수준 줄이기

요인 변수 (train$tip) 줄이기 위해 150 레벨 (KHC, KTF, KGL, ...)이 필요합니다. 몇 번 나타나고 더 많은 수의 레벨을 가진 레벨을 (빠르게) 제거 (또는 53 레벨 만 유지) 할 수 있습니까?

몇 가지 수준이 있거나 더 빠른 방법이 있다고 보는 수준의 이름을 모두 적어 두었습니까?

train <- train[!train$tip == "KTF", ] 
+0

'tbl <- table (train $ tip)'을 (를) 사용하고 빈도 '하위 집합 (열 수준 (팁) % % 이름 (tbl [tbl> 50 ]))' – akrun

답변

4

당신은 할 수 :

train <- train[train$tip %in% names(sort(table(train$tip), decreasing = TRUE))[1:53], ] 

table()는 수준의 주파수를 계산; sort()은 순서대로 정렬합니다. names()은 주파수가 아닌 레벨을 얻습니다. [은 첫 번째 53 만 선택합니다.

+0

고마워요! 하지만 이건 0 행을 .. .. – drewww

+0

죄송합니다, 나는 이름을 추가하는 것을 잊었다; 내 편집을보고 지금 작동해야합니다 – scoa

+0

이제 작동합니다! 감사. 변수 팁에서 0 수준으로 레벨을 제거하려면 어떻게해야합니까? 나는 str (기차 $ 팁)의 모든 150 레벨을 보았다 – drewww