파싱 질문입니다. 펄이나 파이썬에 능숙하면 좀더 용이할 것 같은데 녹록지가 않네요.
허…아래 input file과 같은 tab-delimited 파일들을 파싱해서 각 product(여기서 product명은 알파벳으로 표기했지만 실제 파일은 space-delimited입니다)별로 quantity*order의 총합을 days로 나누어준 값을 정리해야 합니다. 각 파일의 첫줄은 식별을 위해 제가 이 글에서 임의로 추가한 것이고, 실제 파일은 첫줄이 없습니다. 각 product는 고유의 ID를 갖고 있고요. product 구분 없이 전체 값을 일괄적으로 정리를 하는 것까지는 R로 어찌어찌 해보겠는데 product 별로 각각의 값을 구해야 한다는데서 막히네요. 펄로도 해결할 수 있을 것 같긴 한데 아직 입문 단계라 역시 product별로 값을 구하는 문제가 막힙니다. 실제 파일은 예로 들어둔 목록보다 훨씬 길어서 직접 계산하기에는 무리가 있는데, 이걸 일괄적으로 처리할 수 있는 스크립트를 짤 수 있을까요? 데이터는 product별로 sorting이 되어 있습니다.
ID product quantity order days
24723 A 3 4 20
24723 A 5 9 20
24723 A 7 2 20
24723 A 0 7 20
24725 B 3 6 12
24725 B 4 1 12
24726 C 15 2 8
24726 C 2 4 8
ID product avg.quantity per day 24723 A 2 24725 B 0.9167 24726 C 4.75
$ cat foo.awk #!/usr/bin/awk
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
아이고 세상에! awk로도 이게 가능했군요! 업무에서
아이고 세상에! awk로도 이게 가능했군요! 업무에서 자주 사용하는 단순한 명령어들 위주로만 써온 터라 생각지도 못하고 있었는데..스크립트의 세계는 역시 무궁무진하군요.
언제쯤이면 좀 능숙해질런지...감사드리고 또 감사드립니다.
펄 버전입니다.
위의 cinsk 님과는 계산법을 다르게 했습니다. 본문에 적으신 대로라면 "order 와 quantity 의 곱"들의 합을 다 구한 후에 그걸 "days의 합"으로 나누어야 하니 나눗셈은 가장 마지막에 한번만 이뤄져야 할 것 같아서요.
좋은 하루 되세요!
bash (>=3.0) 버전입니다.
위의 raymundo 님과 같은 계산 방식입니다. 아... zsh 를 사용하면 float 부분을 간단하게 할 수 있겠습니다.
엑셀로 하면 되지 않나요?
엑셀로 하면 되지 않나요?
댓글 달기