2011-04-26 31 views
5

Tôi muốn tóm tắt dữ liệu thử nghiệm của mình mỗi lần điều kiện thay đổi.các nhóm con liên tục với ddply

Ví dụ:

> df=data.frame(tos=1:9, temp=rep(c(25,50,25), each=3), response=c(3.2,3.3,3.3, 6.5, 6.5, 6.5, 3.5,3.6,3.5)) 
> df 
    time temp response 
1 1 25  3.2 
2 2 25  3.3 
3 3 25  3.3 
4 4 50  6.5 
5 5 50  6.5 
6 6 50  6.5 
7 7 25  3.5 
8 8 25  3.6 
9 9 25  3.5 

Tôi muốn tóm tắt này theo cách này:

temp response.mean 
25  3.3 
50  6.5 
25  3.5 

Nếu sử dụng ddply như thế này:

thư viện (plyr)
ddply (df, c ("temp"), tóm tắt, reponse.mean = mean (trả lời)

đầu ra là:

temp response.mean 
1 25   3.4 
2 50   6.5 

Có cách nào để thực hiện điều này?

Trả lời

11

Dưới đây là một cách để thực hiện điều này

# find how many observations in each experiment 
tmp1 = rle(df$temp)$lengths 

# create a column referring to experiment number 
df$expt = rep(1:length(tmp1), tmp1) 

# compute means for each combination of temp and expt 
ddply(df, .(expt, temp), summarize, response.mean = mean(response)) 

này tạo ra sản lượng

expt temp response.mean 
1 1 25  3.266667 
2 2 50  6.500000 
3 3 25  3.533333 
+0

Lật 'expt' và' temp' trong 'gọi ddply' của bạn để kết quả được sắp xếp theo đúng gọi món. Khác hơn thế, câu trả lời tuyệt vời. –

+0

@joshua. cám ơn vì sự gợi ý. tôi lật 'expt' và' temp' và cập nhật đầu ra – Ramnath

+0

Không thể nhận đủ 'rle'. :) –

Các vấn đề liên quan