데이터를 재구성하고 재구성하는 가장 좋은 방법은 무엇입니까?


12

저는 실험실 (자원 봉사자)의 연구 조교입니다. 저와 소규모 그룹은 대규모 연구에서 가져온 일련의 데이터에 대한 데이터 분석 작업을 수행했습니다. 불행히도 데이터는 일종의 온라인 앱으로 수집되었으며 가장 유용한 형식으로 데이터를 출력하도록 프로그래밍되지 않았습니다.

아래 그림은 기본적인 문제를 보여줍니다. 나는 이것을 "개조"또는 "구조 변경"이라고 들었다.

질문 : 10k가 넘는 항목이있는 대용량 데이터 세트를 사용하여 그림 1에서 그림 2로 이동하는 가장 좋은 프로세스는 무엇입니까?

이 샘플은 실제 파일에 10k가 넘는 항목이 있습니다.  선명도를 높이기 위해 색상으로 구분했습니다.

이것이 모두로 전환되어야하는 것입니다.


1
이 질문을 두 개의 개별 질문으로 나누고 샘플 데이터를 제공하십시오 (관련이없는 경우 배경을 생략 할 수도 있음). 대략 (1)에 매핑을 찾은 다음 병합하여 숫자를 첨부하려고합니다. (2) 원하는 조작 유형에 크게 의존합니다. 일이 이런 종류의 인기있는 R 패키지를 포함 data.table, dplyr, plyr,와 reshape2- 가능하면 내가 Excel 및 피벗 테이블을 피하는 것이 좋습니다.
Max Ghenis 2016 년

귀하의 데이터 정리 문제가 귀하가 묻는 일반적인 질문의 종류보다 더 광범위하다고 생각합니다. OpenRefine.org를보고 싶을 수도 있습니다. 몇 가지 비디오와 다운로드는이 ​​분석 부분에 많은 도움이 될 수 있습니다.
John

3
이 질문은 통계가 아니라 기초적인 데이터 정리 및 구성에 관한 것이므로 주제에 맞지 않는 것 같습니다.
Nick Stauner 2016 년

2
프로세스의 "초보"와 같이 데이터를 정리하는 것이 데이터를 사용하는 데 필수적이기 때문에 주제에 맞지 않다고 말하고 싶습니다. 더 큰 문제의 일부입니다.
shadowtalker

2
@NickStauner, IIRC 나는 주제가 아닌 '명확하지 않은 / 더 많은 정보가 필요하다'라고 결심했습니다. 데이터 정리는 통계의 범위 내에있는 것 같습니다. 비록 좋은 사람들이 동의 할 수는 없지만 이러한 질문은 주제가 될 수 있다고 생각합니다. 데이터 정리 태그와이 CV 스레드 ( 1 , 2 , 3 , & 4) 가 있다고 가정하십시오 .
gung-Monica Monica 복원

답변:


12

의견 에서 언급했듯이 실제 답변을 공식화하기에는 질문에 대한 세부 정보가 충분하지 않습니다. 올바른 용어를 찾고 질문을 공식화하는 데 도움이 필요하기 때문에 일반적으로 간단히 말할 수 있습니다.

2

어떤 의미에서든 데이터 정리는 모든 소프트웨어에서 수행 할 수 있으며 Excel 또는 R을 사용하여 수행 할 수 있습니다. 두 가지 선택 모두에 장단점이 있습니다.

  • Excel : Excel은 데이터 정리를위한 가장 일반적인 선택입니다 (R fortunes # 59 pdf 참조 ). 또한 통계 학자들에게는 좋지 않은 선택으로 간주됩니다. 주된 이유는 모든 것을 잡거나 모든 것을 동일하게 취급하기가 어렵고 변경 사항이 기록되지 않았기 때문에 나중에 해당 변경 사항을 다시 방문 할 수 없기 때문입니다. Excel을 사용하는 것의 장점은 수행중인 작업을보다 쉽게 ​​확인할 수 있으며 변경할 내용을 많이 알 필요가 없다는 것입니다. (통계 학자는 추가 후자 고려할 것 사기꾼 .)
  • R : R에는 가파른 학습 곡선이 필요합니다. R 또는 프로그래밍에 익숙하지 않은 경우 Excel에서 매우 쉽고 빠르게 수행 할 수있는 작업은 R에서 시도하는 데 어려움을 겪을 수 있습니다. 반면에이 작업을 다시 수행해야하는 경우 학습은 잘 보냈다. 또한 R의 데이터 정리를 위해 코드를 작성하고 저장하면 위에 나열된 단점을 완화 할 수 있습니다. 다음은 R에서 이러한 작업을 시작하는 데 도움이되는 몇 가지 링크입니다.

    스택 오버플로 에 대한 많은 좋은 정보를 얻을 수 있습니다 .

    Quick-R 은 또한 유용한 리소스입니다.

    숫자 모드로 숫자 가져 오기 :

    R을 배우는 또 다른 귀중한 소스는 UCLA의 통계 도움말 웹 사이트입니다 .

    마지막으로, 오래된 Google을 통해 항상 많은 정보를 찾을 수 있습니다.

    • 이 검색 : r의 데이터 정리 는 많은 자습서를 제공합니다 (내가 다루지 않은 FTR).

업데이트 : 이것은 '연구 단위'(여러분의 경우 개인) 당 여러 측정이있을 때 데이터 세트의 구조와 관련된 일반적인 문제입니다. 모든 사람에 대해 하나의 행이있는 경우 데이터는 '와이드'형식으로되어 있지만 응답 변수에 대해 여러 열이 있어야합니다. 반면에 응답 변수에 대해 단 하나의 열을 가질 수 있지만 결과적으로 사람마다 여러 행이있을 수 있습니다.이 경우 데이터는 '긴'형식이라고합니다. 이 두 형식 사이를 이동하는 것을 데이터를 특히 R 세계에서 '재 형성'이라고합니다.

  • 이에 대한 표준 R 함수는 모양 입니다. UCLA의 통계 도움말 웹 사이트 에서 사용하기 위한 안내서reshape()있습니다.
  • 많은 사람들 reshape이 함께 일하기 어렵다고 생각 합니다. Hadley Wickham 은 프로세스를 단순화하기 위해 reshape2 라는 패키지를 제공했습니다 . Hadley의 reshape2에 대한 개인 웹 사이트는 여기 , Quick-R 개요는 여기 및 멋진 자습서는 여기에 있습니다 .
  • 데이터를 재구성하는 방법에 대한 SO에 대한 많은 질문이 있습니다. 일반적으로 데이터 분석가가 직면하기 때문에 대부분은 광범위하게 진행됩니다. 귀하의 질문은 훨씬 흔하지는 않지만 오래 걸리는 것입니다. 그러나 여전히 그것에 대해 많은 스레드가 있습니다 . 이 검색으로 스레드를 살펴볼 수 있습니다 .
  • Excel 로이 작업을 수행하려는 마음이 있다면 Excel에서 VBA 매크로를 작성하여 모양 변경 기능을 복제하는 스레드가 있습니다 .VBA를 사용하여 Excel에서 melt / rehshape?

2
이 질문과이 답변은 왜 거의 모든 종류의 연구에 프로그래밍 능력이 점점 더 필요한지를 잘 보여줍니다. 나는 또한 내 블로그에 게시 할이 질문에 대한 완전한 대답을 쓸 것입니다. 그러나 잊어 버리기 전에이 의견을 얻고 싶습니다.
shadowtalker

2
나는 어느 정도 동의하지만 "필수"와 "모든 종류의 연구"는 조금 멀어지고있다. 많은 분야는 종종 더티 데이터를 다루지 않으며 많은 주요 연구자들이 프로그래밍 언어를 만질 필요가 없었습니다.
Behacad

와, 고마워 이 모든 정보를 처리하고 통합하는 데 약간의 시간이 걸립니다. 약간의 메타 탄젠트가 내 질문으로 자극 된 것 같습니다 ... 언어 / 문화에 대한 지식이없는 외국 땅에 떨어 졌다고 상상해보십시오. 이것이 나와 통계입니다. 응답에 모두 참여한 시간에 감사드립니다.
Wilkoe 2016 년

질문이 닫히는 것처럼 보이지만 초기 질문을 명확히하기 위해 편집 내용을 추가했습니다.
Wilkoe 2016 년

질문은 @ user48538로 닫히고이 버전은 불행히도 이전 버전보다 더 명확하지 않습니다. 10k 개의 행이 있으면 Excel 에서이 작업을 수행하고 싶지 않습니다. R 또는 이와 유사한 프로그래밍 소프트웨어를 사용해야합니다. 특정 작업의 이름은 'long'에서 'wide'로 데이터 세트를 재구성하는 것입니다. 몇 가지 링크를 추가하겠습니다. 또한 통계 나 프로그래밍에 대한 지식이 거의 없거나 전혀없는 학부 자원 봉사자라면이 과제를 누구에게 맡겨야하는지에 대해 무책임한 사람이었습니다 (IMHO). 이것이 당신의 임무가 될 방법은 없습니다.
gung-Monica Monica 복원

0

R을 사용하여 다음을 시도하십시오.

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree

0

스칼라에서는 이것을 "폭발"연산이라고하며 dataFrame에서 수행 할 수 있습니다. 데이터가 rdd 인 경우 먼저 toDF명령을 통해 dataFrame으로 변환 한 다음 .explode메소드 를 사용하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.