2016-08-12 3 views
0

일반적으로 R을 좋아하지만 유형 변환 문제로 인해 나를 미치게 만듭니다.R : 데이터 형식이 혼합 된 데이터 프레임의 형식 변환

다음 문제 :

데이터베이스 연결에서 데이터 프레임을 읽습니다. 결과는 문자 열이있는 데이터 프레임입니다.

첫 번째 열은 날짜 형식임을 알고 있습니다. 나머지는 모두 숫자입니다. 그러나 데이터 프레임의 문자 열을 올바른 유형으로 변환하려고해도 아무 문제가 없습니다.

데이터 프레임을 행렬로 변환 한 다음 데이터 프레임으로 다시 변환하면 모든 열이 유형 요소가되고 수치로 캐스팅 요소가 잘못 작성되어 요소 수준의 인덱스가 실제 값 대신 변환됩니다.

또한 테이블의 크기가 큰 경우 - 각 열을 수동으로 변환하지 않으려합니다. 이 작업을 자동으로 수행 할 수있는 방법이 없습니까?

+0

당신이를 통해 테이블을 읽을 경우'당신은 열에 대한 가정 할 클래스의 벡터되어야 인수'colClasses'를 지정할 수 있습니다 read.table'. 자세한 정보는'? read.table'을보십시오. – Vandenman

+0

이 상황에서 도움이 될 수 있습니다. 그러나 열의 번들을 자동으로 변환하는 데는 도움이되지 않습니다. 그것은 수동 절차의 일종입니다. – CodingButStillAlive

답변

1

lapply으로 데이터 세트의 열을 반복하여 type.convert을 사용할 수 있습니다. 열을 character으로 변환하고 type.convert을 적용하십시오. 그것이 character 클래스 인 경우 factor으로 변환되어 Date 클래스로 변환 할 수 있습니다 (character 클래스가있는 단일 열만 있으므로 '날짜'클래스의 형식은 확실하지 않으므로 형식이 다른 경우 as.Dateformat 인수를 지정하십시오.

df1[] <- lapply(df1, function(x) {x1 <- type.convert(as.character(x)) 
         if(is.factor(x1)) 
          as.Date(x1) else x1}) 
+0

감사합니다. 이 절차는 실제로 문제를 해결합니다. 그러나 R (문자와 다른 형식 사이에서 앞뒤로 변환하는) 같은 노력이 실제로 필요할지 궁금합니다. – CodingButStillAlive

+0

@ user1881788 자동으로 선택해야하는'library (readr) '에서'read_csv'를 사용할 수 있습니다. 열 클래스를 올리십시오. – akrun