r프로그래밍 문제 질문있습니다!!!!!
reshape2 패키지에서 제공하는 tips 데이터를 이용하여, 물음에 답하여라.
1) day의 수준을 기준으로 tip에 대한 요약통계를 구하라.(tapply함수 이용)
2) tip에 대한 요약통계를 구하라.(apply 함수 이용)
(tip에 대한 요약통계를 구할 때는 summary() 함수를 이용하라. 즉 tapply(), 와 apply() 안에서 tip에 대한 요약통계를 구할 때는 summary() 함수를 이용하라.)
문제는 이렇고 함수를 배워도 응용하는 방법을 모르겠어서 질문드립니다. r은 배워도 c언처럼 이리 저리 응용하는게 어려운거 같습니다 ㅠㅠㅠ
꼭 답변 부탁드리겠습니다 ㅎㅎㅎ^_^
1. with(tips, tapply(tip, day, summary))
- with 함수와 함께 tapply를 사용한 예제입니다.(다른 방법들이 많으나 base 패키지에서 사용 가능한 함수를 사용하였습니다.)
- with(데이터, 적용함수)의 형태와, tapply(변수, 수준, 적용함수)의 형태로 사용합니다.
- 위의 코드의 결과값은 리스트 형태로 반환되며 각 리스트 요소의 이름은 day의 수준별이 되겠습니다.
2. apply(tips[,"tip",drop=F], 2, summary)
- 문제의 의도 파악이 되지 않은데요. apply는 보통 데이터의 여러 컬럼에 대해 동일한 함수를 적용할 때 많이 사용하는데 하나의 컬럼에 대해 apply 함수를 이용하라는 부분이 프로그래밍 면에서는 fancy하지는 않네요. (간단히 summary(tips$tip) 를 이용하면 되기 때문입니다.)
- apply 함수는 데이터, 컬럼/행, 함수 의 인자를 받습니다. apply(데이터, 컬럼/행, 함수, ...) 와 같은 식으로요.
- tips는 문자열( sex,smoker,day,time)을 포함한 data.frame이기 때문에 바로 apply(tips, 2, summary)를 하게 된다면 각 변수의 길이, 클래스 등을 반환합니다. 원하는 결과 값이 아니지요..
- 하여 마찬가지로 많은 방법이 있겠으나 하나의 예시로만 답변 드리겠습니다.
- tips데이터의 "tip" 컬럼만 끄집어 내고 drop=F를 이용해 데이터프레임의 형태를 유지했습니다. 그 다음 인자는 컬럼=2를 나타내는 의미로, "컬럼 단위로 뒤에 올 함수를 적용시킨다"는 의미입니다. 마지막으로 오는 인자에는 summary 함수를 적용합니다.
도움이 되셨으면 합니다 ~ ^^