2017-08-09 71 views
1

嗨我需要計算一些實驗的累積昆蟲日。這是我的數據幀是什麼樣子如何使用r來計算累計昆蟲天數?

Rep trt  date BLB 
1 I 1 7/12/2017 3 
2 I 2 7/12/2017 2 
3 I 3 7/12/2017 4 
4 I 4 7/12/2017 0 
5 II 1 7/12/2017 1 
6 II 2 7/12/2017 2 
7 II 3 7/12/2017 2 
8 II 4 7/12/2017 1 
9 III 1 7/12/2017 3 
10 III 2 7/12/2017 2 
11 III 3 7/12/2017 1 
12 III 4 7/12/2017 1 
13 IV 1 7/12/2017 0 
14 IV 2 7/12/2017 3 
15 IV 3 7/12/2017 3 
16 IV 4 7/12/2017 0 
17 I 1 7/20/2017 12 
18 I 2 7/20/2017 6 
19 I 3 7/20/2017 7 
20 I 4 7/20/2017 18 
21 II 1 7/20/2017 17 
22 II 2 7/20/2017 11 
23 II 3 7/20/2017 25 
24 II 4 7/20/2017 17 
25 III 1 7/20/2017 18 
26 III 2 7/20/2017 6 
27 III 3 7/20/2017 48 
28 III 4 7/20/2017 13 
29 IV 1 7/20/2017 7 
30 IV 2 7/20/2017 22 
31 IV 3 7/20/2017 18 
32 IV 4 7/20/2017 11 
33 I 1 7/27/2017 1 
34 I 2 7/27/2017 3 
35 I 3 7/27/2017 4 
36 I 4 7/27/2017 0 
37 II 1 7/27/2017 1 
38 II 2 7/27/2017 0 
39 II 3 7/27/2017 1 
40 II 4 7/27/2017 0 
41 III 1 7/27/2017 1 
42 III 2 7/27/2017 1 
43 III 3 7/27/2017 0 
44 III 4 7/27/2017 0 
45 IV 1 7/27/2017 1 
46 IV 2 7/27/2017 0 
47 IV 3 7/27/2017 1 
48 IV 4 7/27/2017 2 
49 I 1 8/2/2017 0 
50 I 2 8/2/2017 0 
51 I 3 8/2/2017 1 
52 I 4 8/2/2017 0 
53 II 1 8/2/2017 0 
54 II 2 8/2/2017 0 
55 II 3 8/2/2017 0 
56 II 4 8/2/2017 0 
57 III 1 8/2/2017 1 
58 III 2 8/2/2017 0 
59 III 3 8/2/2017 0 
60 III 4 8/2/2017 0 
61 IV 1 8/2/2017 0 
62 IV 2 8/2/2017 0 
63 IV 3 8/2/2017 0 
64 IV 4 8/2/2017 2 

結構將是:

data.frame': 64 obs. of 4 variables: 
$ Rep : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 2 2 2 2 3 3 ... 
$ trt : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ... 
$ date: Factor w/ 4 levels "7/12/2017","7/20/2017",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ BLB : int 3 2 4 0 1 2 2 1 3 2 ... 

要做到這一點,我需要計算昆蟲的平均值爲不同的處理日期的每個組合。例如,我必須計算每次治療的日期7/12和7/20之間的每一次。然後我需要計算日期7/20和7/27之間的平均值等等。有沒有人知道如何使用r軟件來做到這一點?我真的很感謝幫助!

+0

那麼你是否將7/12和7/20視爲一組?另有7/20和7/27? – useR

+0

是的,我將兩個日期的每個組合作爲一個組對待! – Obiratanea

+1

下次你可以使用'dput(dataframe)'? – CPak

回答

1

首先創建數據(如果你提供的dput(數據將是很好)...):

set.seed(123) 
df = data.frame(Rep = rep(c("I","II","III","IV"), each = 4, times = 4), 
       trt = as.factor(rep(1:4, times = 16)), 
       date = as.Date(rep(c("7/12/2017", "7/20/2017", "7/27/2017", "8/2/2017"), each = 16), 
           format = "%m/%d/%Y"), 
       BLB = sample(0:50, 64, replace = TRUE)) 

> str(df) 
'data.frame': 64 obs. of 4 variables: 
$ Rep : Factor w/ 4 levels "I","II","III",..: 1 1 1 1 2 2 2 2 3 3 ... 
$ trt : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ... 
$ date: Date, format: "2017-07-12" "2017-07-12" "2017-07-12" ... 
$ BLB : int 14 40 20 45 47 2 26 45 28 23 ... 

簡單的子集和彙總:

# Create subset for each date group 
date_group1 = subset(df, df$date %in% c(as.Date("2017-07-12"), 
             as.Date("2017-07-20"))) 
date_group2 = subset(df, df$date %in% c(as.Date("2017-07-20"), 
             as.Date("2017-07-27"))) 
date_group3 = subset(df, df$date %in% c(as.Date("2017-07-27"), 
             as.Date("2017-08-02"))) 

# Aggregate by treatment in each date_group 
aggregate(BLB ~ trt, data = date_group1, mean) 
aggregate(BLB ~ trt, data = date_group2, mean) 
aggregate(BLB ~ trt, data = date_group3, mean) 

# > aggregate(BLB ~ trt, data = date_group1, mean) 
# trt BLB 
# 1 1 28.375 
# 2 2 21.750 
# 3 3 27.875 
# 4 4 41.500 
# > aggregate(BLB ~ trt, data = date_group2, mean) 
# trt BLB 
# 1 1 23.875 
# 2 2 19.875 
# 3 3 21.625 
# 4 4 31.250 
# > aggregate(BLB ~ trt, data = date_group3, mean) 
# trt BLB 
# 1 1 22.375 
# 2 2 21.250 
# 3 3 17.875 
# 4 4 17.500 
+0

非常感謝你!它爲我工作! – Obiratanea

+0

@Obiratanea如果你認爲這回答你的問題。請接受它,讓其他人可以看到。 – useR

+0

useR我怎麼接受它?謝謝 – Obiratanea

0

你已經錯過了一些日期組合組@用戶

有 (2017年7月12日,2017年7月27日), (2017年7月12日,2017年8月2日), (2017年7月20日,2017年8月2日)也。

+0

OP提到「between日期7/12和7/20「和」日期7/20和7/27之間「。所以我認爲他只需要連續配對,因爲從2017-07-12到2017-07-27將包括2017-07-20。 – useR