droplevels
데이터 프레임 (이 질문을 중복으로 표시하지 마십시오. :)). 사용할 수있는 모든 방법이 주어지면 하나만 작동합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 예 :R 데이터 프레임 팩터
> df = data.frame(x = (c("a","b","c")),y=c("d","e","f"))
> class(df$x)
[1] "factor"
> levels(df$x)
[1] "a" "b" "c"
방법 1 작동하지 : 작동하지
> df1 = droplevels(df)
> class(df1$x)
[1] "factor"
> levels(df1$x)
[1] "a" "b" "c"
방법 2 : 작동하지
> df2 = as.data.frame(df, stringsAsFactors = FALSE)
> class(df2$x)
[1] "factor"
> levels(df2$x)
[1] "a" "b" "c"
방법 3 : 4가 최종적으로 작동
> df3 = df
> df3$x = factor(df3$x)
> class(df3$x)
[1] "factor"
> levels(df3$x)
[1] "a" "b" "c"
방법 :
> df4 = df
> df4$x = as.vector(df4$x)
> class(df4$x)
[1] "character"
> levels(df4$x)
NULL
작동하는 동안 나는 방법 4가 가장 우아하지 않다고 생각합니다. 이 디버깅을 도와 줄 수 있습니까? 많은 감사
는는 편집 : 다음의 의견과 답변 : 나는 데이터 프레임에서 요인 구조를 제거 할 만 droplevels
그래서 당신이 원하는에'당신은 정말 당신이 요인 변수를 문자 가변적이고을 변환 할 의미 droplevels'. 그렇다면 방법 4만이 체계적으로 올바른 선택입니다. 'droplevels '는 한 요소에서 관찰되지 않은 레벨을 제거하지만, 테스트 케이스에서는 모든 레벨을 관찰하므로 아무 것도 삭제되지 않습니다. 처음에 인자가되기를 원하지 않는다면'df = data.frame (x = (c ""a ","b ","c ")), y = c ("d " "e", "f"), stringsAsFactors = FALSE)'. 방법 2는 이미 해당 시점의 요소이기 때문에 작동하지 않습니다. 당신의 목표는 정확히 * 무엇입니까? – MrFlick
@ MrFlick, 설명을 주셔서 감사합니다. 그러나 여전히 이상하게도 방법 2가 작동하지 않습니다. – MasterJedi
@YujiaHu 전혀 이상하지 않습니다. 'as.data.frame'을 전달하면 data.frame은 클래스 속성과 행 이름을 조정합니다. – joran