2016-12-11 8 views
0

큰 데이터 집합을 R로 가져오고 신속하게 열을 통과하고 열에 범주 값, 숫자, 날짜 등이 있는지 여부를 확인하는 방법이 있는지 궁금합니다. str(df) 또는 class(df) 인 경우 열이 대부분 잘못 표시됩니다.데이터 세트 가져 오기시 범주 변수 식별 R

예를 들어, 일부 열은 숫자로 표시되지만 열에는 10 개의 고유 한 값 (1에서 10까지) 만 표시되므로 실제로 요소 여야합니다. 등급을 나타내는 고유 한 값이 11 개만있는 다른 열이 있습니다 (0-5에서 0.5 증분). 다른 열에는 1-230 개의 국가 코드 (172 개 값)가 있습니다.

변수의 성격을 이해하기 위해 각 열을 거치지 않고 열이 하나의 요소인지 신속하게 식별 할 수있는 방법이 있습니까? (데이터 세트에 많은 열이 있음)

감사! 순간


, 나는 처음 두 경우를 잡으려고 다음 코드의 변형을 사용하고있다 :

as.numeric(df[,51])     #convert the column to numeric 
len = length(unique(df[,51]))  #find number of unique values 
diff = max(df[,51]) - min(df[,51]) #calculate difference between min and max 
ord = (len - 1)/diff    # calculate the increment if equally spaced 

#subtract the max value from second to max value to find the actual increment (only uses last two values) 
step = sort(unique(df[,51]),partial=len)[len] - 
sort(unique(df[,51]),partial=len-1)[len-1] 

ord == step       #check if the last increment equals the implied increment 

그러나,이 방법은 대한 (각 변수가 동일한 간격 있다고 가정 예를 들어, 0.5로 증가) 마지막 두 값 사이의 간격 만 테스트합니다. 이것은 6 개의 고유 한 값을 가지고 있지만 중간에 간격이 고르지 않은 c (1,2,3.5,4.5,5,6)를 포함하는 열을 캐치하지 않습니다 (내 데이터 세트에서 공통적 인 것은 아닙니다). 고유 값은 숫자 변수 대 요소를 나타내는 것이지만, 당신이 결정하는 경우에 당신이

table(sapply(df, function(x) { length(unique(x))})) 

하여 데이터에 뭐가 있는지 모든 변수를 검사 할 수 있습니다 얼마나 많은

답변

1

그것은 명확하지 않다 그 경계 사이 요인 및 숫자는

which(sapply(df, function(x) {length(unique(x)) < k})) 
+0

도움으로 요소를 식별 할 수 케이,하지만 난이 질문에 게시 코드의 변형과 협력 한 이유는 숫자/요소 사이의 데이터 집합의 실제 차단은 없다 요인을 다른 방법으로 식별하려고 시도하다 –