R의 요인 변수별로 요약을 자동 생성


11

다음과 같은 데이터 프레임이 있습니다.

   case simulation temp plank oxygen
1     1          1    8     7     11
2     2          1   16    10     15
...
17   17          2   26    12     17
18   18          2   15     8     12
19   19          2   28    11     21
20   20          2   24     6     14

시뮬레이션 변수의 수준으로 요약을 나누고 싶습니다. 예를 들어, temp시뮬레이션 = 1과 시뮬레이션 = 2 의 평균을 원 하고 표준 편차와 동일합니다.

현재 다음 코드를 사용하고 있습니다.

df <- read.csv("data.csv")
attach(df)

# Create subset variables
temp1 = subset(temp, simulation==1)
temp2 = subset(temp, simulation==2)

plank1 = subset(plank, simulation==1)
plank2 = subset(plank, simulation==2)

oxygen1 = subset(oxygen, simulation==1)
oxygen2 = subset(oxygen, simulation==2)

print(sd(temp1))
print(sd(temp2))
print(sd(plank1))
print(sd(plank2))

R 에서이 작업을 수행하는 자동 방법이 있어야한다고 확신하지만 찾을 수 없습니다. 나는을 사용하려고 시도했지만 summary(df ~ simulation)유용한 것을 생성하지는 않습니다.

답변:


17

by()또는 tapply()기능을 확인하십시오 . 원래,

tapply(y, g, mean)

y수준별로 평균을 제공합니다 g. 결과 집계 측정 값에서 data.frame을 가져 오려면을 사용하십시오 aggregate().

Hmisc 패키지 의 summary.formula()기능을 통해보다 정교한 솔루션을 사용할 수 있습니다 .


3

package doBy에는 summaryBy시도한 것과 같은 수식 기반 구문 이있는 함수가 있습니다.

또한, 나는 그 질문이 stackexchange에 대해 더 잘 요청되었을 것이라고 생각합니다.


감사. 나는 패키지를 볼 것이다. 이것은 스택 교환 아닌가요?
robintw

1
나는 fabians가 Stackoverflow : stackoverflow.com 을 의미한다고 생각 합니다. 이 장소는 일반적으로 통계에 관한 것입니다. 그러나이 둘은 많이 혼합 될 수 있습니다.
개빈 심슨
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.