【发布时间】:2018-08-28 18:38:19
【问题描述】:
我想计算不同个体在不同级别的热和冷温度处理之间的面积变化百分比(时间 T1 和 T9 之间)。
一些样本数据:
library(dplyr)
Individual<-c("a1.2", "a1.2","bd3.d","bd3.d", "k20.d","k20.d", "dfd.2","dfd.2", "d3.d","d3.d", "df3.1","df3.1")
Treat <- c('hot','hot','hot','hot','hot','hot','cold',"cold",'cold',"cold",'cold',"cold")
Time <- c("T1", "T9", "T1", "T9","T1", "T9","T1", "T9","T1", "T9","T1", "T9")
Area<- c("0.1", "0.5", "0.1", "0.645","0.1", "0.54","0.1", "0.587","0.1", "0.78","0.23", "0.78")
df.Area <- data.frame(Individual, Treat,Time,Area)
head(df.Area, n=20)
head(df.Area, n=20)
Individual Treat Time Area
1 a1.2 hot T1 0.1
2 a1.2 hot T9 0.5
3 bd3.d hot T1 0.1
4 bd3.d hot T9 0.645
5 k20.d hot T1 0.1
6 k20.d hot T9 0.54
7 dfd.2 cold T1 0.1
8 dfd.2 cold T9 0.587
9 d3.d cold T1 0.1
10 d3.d cold T9 0.78
11 df3.1 cold T1 0.23
12 df3.1 cold T9 0.78
例如:(T9-T1/T9)*100
首先找到相同的个体,例如第1行和第2行的a1.2,在T9和T1之间做计算:(0.5-0.1/0.1)*100=400%增加。
输出将是:
Individual Treat Ch.Area
1 a1.2 hot 400
2 bd3.d hot num.etc
3 k20.d hot num.etc
4 dfd.2 cold num.etc
5 d3.d cold num.etc ....
df1 <- df.Area %>% group_by(Treat, Time, Individual)
这是对结构的疯狂猜测:
df2 <- df1 %>% summarise(Ch.Area = T9[!Individual == "??"] - T1[!Individual == "??"])/T9([!Individual == "??"])*100)
我希望 dplyr 将具有相同名称的每个人分组在一起以计算百分比,同时仍保留 Treat 的组变量。这可能吗?如果更好的话,我也很乐意使用其他包/方法。
任何帮助都会很棒!
【问题讨论】: