2011-09-20 10 views
24

데이터 분석을 위해 R을 사용하며 매우 만족합니다. 그러나 데이터 정리는 약간 쉬울 수 있습니다. 나는이 일에 적합한 다른 언어를 배우려고 생각하고있다. 특히, 원시 데이터를 가져와 불필요한 변수 나 관찰을 제거하고 R에서 쉽게로드 할 수 있도록 서식을 지정하는 데 사용할 도구를 찾고 있습니다. 여러 줄 텍스트와 달리 내용은 대부분 숫자와 문자열 데이터입니다.데이터 청소를위한 Python 또는 awk/sed

awk/sed 조합 대 파이썬을 고려하고 있습니다. (나는 Perl이 또 다른 선택이 될 수 있다는 것을 알고 있지만, 다른 언어를 배우려면 Python이 더 좋고 확장 가능한 선택 인 것 같다.) sed/awk의 장점은 더 빠를 것이라는 점이다. 배우다. 단점은이 조합이 파이썬만큼 확장 성이 없다는 것입니다. 실제로 파이썬을 배웠다면 "mission creep"을 상상할 수 있습니다. 괜찮 았지만 내 목표는 아닙니다.

다른 고려 사항은 대용량 데이터 세트에 대한 어플리케이션입니다. 필자가 이해하는 것처럼, awk/sed는 라인 단위로 동작하지만 파이썬은 일반적으로 모든 데이터를 메모리로 가져온다. 이것은 sed/awk의 또 다른 장점이 될 수 있습니다.

다른 문제가 있습니까? 당신이 제공 할 수있는 조언을 주시면 감사하겠습니다. (I는 R 사용자가 자신의 청소 권장 사항을 제공하기위한 R 태그를 포함.)

+0

"청소"는 이상 치를 잘라내거나 일관성 또는 다른 것을 복원하는 것을 의미합니까? "데이터"로, 당신은 majorly 숫자 또는 문자열, 또는 단순히 텍스트를 의미합니까? 나에게 현재의이 질문의 목표는 너무 일반적이다. – nye17

+0

@ nye17, 모호한 점에 대해 사과드립니다. 좀 더 자세하게 설명했습니다. – Charlie

+2

주로 파이썬을 직접 사용하지만, 텍스트 기반 데이터 세트를 순수하게 조작하여 R의 데이터 인터페이스 역할을하는 경우 강력한 정규 표현식과 텍스트 처리의 유연성을 감안할 때 강력하게 perl을 제안합니다. – nye17

답변

15

이 모험을 망치고하지,하지만 난 거절 여기 왜 것 :

  • R은 벡터화되는 경우 SED/AWK 하지
  • R은 이미 펄 정규 표현식과 확장 정규 표현식 모두가
  • 더 쉽게
  • R이 요약, 시각화 할 수 있습니다 ...
  • 필요하면 통계 루틴 (예를 들어, 전가)에 의지 할 수
  • R

그리고 가장 중요한 것은 입니다. 알고 계신 분은 R입니다.

물론, sed/awk는 작은 프로그램이나 한 줄짜리 프로그램에도 유용하며 파이썬은 훌륭한 언어입니다. 그러나 나는 또한 R을 고수 할 생각이다.

+4

나는 그가 R을 떨어 뜨리는 것을 고려하지 않고 있지만 그것을 보충한다고 생각합니다. – Karl

3

파이썬이나 펄이나 루비, 단기 sed/awk 솔루션과 같은 데이터 파일을 처리하기 위해 적절한 언어로 장기간 투자하는 것이 좋다. 모든 데이터 분석가는 적어도 세 가지 언어가 필요하다고 생각합니다. 나는 엄청난 계산을 위해 C를, 데이터 파일을 처리하기 위해 펄을, 그리고 대화식 분석과 그래픽을 위해 R을 사용한다.

나는 파이썬이 대중화되기 전에 perl을 배웠다. 나는 루비에 대한 훌륭한 것들을 들었으므로 대신 그것을 시도하고 싶을 수도 있습니다.

이들 중 어느 것이 든 파일별로 작업 할 수 있습니다. 파이썬은 미리 전체 파일을 읽을 필요가 없습니다.

+2

물론 'C++은 C보다 더 좋은 C 일 수 있습니다'라는 경고와 비슷하게 파이썬 팬은 펄보다 더 낫다고 주장합니다.그러나 일반적으로 'R, * a * 스크립팅 언어 및 * 현대식 휴대용 컴파일 언어 *'가 좋은 요리법임을 알고 있습니다. –

+0

@DirkEddelbuettel 사실 저는 90 년대 후반 프로그래밍에 현혹되었습니다. 나는 학생들이 Fortran 프로그래머들을 보는 방식을 저에게 보여 줄 것을 두려워합니다. – Karl

1

이 유형의 처리에는 'awk'을 권하고 싶습니다.

아마도 간단한 텍스트 파일에서 잘못된 관찰을 검색하거나 거부하는 것일 것입니다.

awk는이 작업에서 번개가 빠르고 프로그램하기가 매우 쉽습니다.

더 복잡한 작업이 필요한 경우 수행 할 수 있습니다.

성능에 신경 쓰지 않는다면 Python도 가능합니다. "rpy"라이브러리는 파이썬과 R 컴포넌트를 긴밀하게 통합하는데 사용될 수 있습니다.

10

나는 정기적으로 파이썬과 펄을 사용한다. 나는 꽤 잘 sed를 알고 한번 awk를 많이 사용했습니다. 나는 R을 발작과 분출로 사용했다. Perl은 데이터 변환 기능과 속도면에서 최고입니다.

  • 펄은 기본적으로 sed와 awk가 할 수있는 모든 것을 할 수 있지만 훨씬 더 많습니다. (실제로, 펄과 함께 제공되는 a2p와 s2p는 awk와 sed 스크립트를 Perl로 변환합니다.)
  • Perl은 대부분의 Linux/Unix 시스템에 포함되어 있습니다. 그것이 사실이 아니었을 때, sed와 awk를 배울 좋은 이유가있었습니다. 그 이유는 오래 가지 못했다.
  • Perl에는 awk 또는 sed에서 얻을 수있는 것보다 훨씬 많은 전력을 제공하는 풍부한 모듈 세트가 있습니다. 예를 들어이 모듈은 보완 DNA 시퀀스, 통계 계산, CSV 파일 구문 분석 또는 MD5 계산과 같은 단 한 번에 사용할 수 있습니다. (패키지의 경우 http://cpan.org/ 참조)
  • Perl은 본질적으로 sed 및 awk와 같이 간결합니다. 나 같은 사람들 (그리고 나는 당신이 용의자이다)에게 커맨드 라인의 데이터를 신속하게 변환하는 것은 대단한 이익이다. 파이썬은 명령 행을 효율적으로 사용하기에는 너무 성급합니다.

솔직히 왜 사람이 펄을 통해 sed와 awk를 배우는 지 생각하기가 어렵습니다.

기록상 나는 "펄 녀석"이 아닙니다. 나는 스위스 군용 칼로 좋아하지 종교가 아닙니다.

+2

공정한 코딩 배경과의 비교를 위해 +1. – nye17

+0

+1입니다. 파이썬은 읽기 쉽지만 Perl은 속도와 소형성에 대해 언제나 능가합니다. 명령 행 옵션은 실제로 축복입니다. –

+0

'모든 유닉스 시스템에는 Perl이있다'라는 말은 sed와 awk에 더 많이 적용되며,이 두 가지는 Windoze에서 작업하기 위해 (떨리는) 필요가있을 때 더 쉽게 잡을 수 있습니다. 그리고 찰리가 Windows에서 분명히 R을 가졌을 때 'R use just'로 되돌아갑니다. 필자는 Perl에서 많은 데이터 필터를 작성했지만 R로 완전히 전환했습니다. –

1

나는 Dirk에 동의합니다. 나는 같은 것을 생각하고 다른 언어를 약간 사용했다. 그러나 결국 경험 많은 사용자가 ddply 또는 plyr과 같은 R. Packages로 수행하는 작업이 다시 매우 놀랄 것입니다. , 통신은, TR, 분류, 절단, 결합, 그렙 : 그 것을 특징으로하는 SQL은 종종 데이터 저글링과

6

내가/AWK UNIX-모두 플랫폼에서 사용할 수있는 다른 명령 줄 도구의 풍부한와 함께 나오지도 추천 할 날 도와 루핑 (looping)과 겹침 선 (shell)과 같은 셸 기능이 내장되어 있습니다. R이 다른 인기있는 스크립팅 언어보다 좋지 않을지라도 데이터 조작을 처리 할 수 ​​있으므로 실제로 다른 프로그래밍 언어를 배울 필요가 없습니다.

+0

Jeff는 좋은 점을 알고 있습니다. 파이프와 함께 붙이면 커맨드 라인 도구와 같이 빠르고 강력하게 데이터를 잘라낼 수 있습니다. Perl은 이러한 도구 중 많은 부분을 보완합니다 (대신). 요약은 http://www.gnu.org/s/coreutils/manual/html_node/index.html에있는 GNU coreutils 매뉴얼을 참조하십시오. – Reece

+0

Jeff와 Dirk의 littler 패키지에서 멋진 'r'바이너리를 사용하면 동일한 파이프로 R을 재생할 수 있습니다. 그래서 다시 R을 사용하여 :) –

+0

묻는 사람은 플랫폼을 지정하지 않았지만 이것은 Windows에있는 대부분의 인구에게 좋은 방법이 아닐 수도 있습니다. Unix 툴을 Windows 환경으로 이전하는 데 문제가 없었습니다. – user287424

관련 문제