2016-11-29 48 views
1

我有一个变量t,l和c在数天内重复测量的数据集。我试图计算t和l/c峰之间的差异。我已经设法找到了高峰测量的那一天,但我不知道如何将这些全部放在同一条线上,以便我可以计算日差。从分组数据中选择不同的行

Record | day | t  | day_tmax | l | day_lmax | c  | day_cmax 
-------------------------------------------------------------------- 
1  | 1 | 40.5 | NA  | 2 | NA  | 1.6 | NA 
-------------------------------------------------------------------- 
1  | 2 | 136.8 | 2  | 2.5 | 2  | 190.6 | NA 
-------------------------------------------------------------------- 
1  | 3 | 102.7 | NA  | 1.6 | NA  | 375.8 | NA 
-------------------------------------------------------------------- 
1  | 4 | 55.1 | NA  | 1.6 | NA  | 515.5 | 4 
-------------------------------------------------------------------- 
1  | 5 | 32.3 | NA  | 1.7 | NA  | 411.2 | NA 
-------------------------------------------------------------------- 
1  | 6 | 27.4 | NA  | 1.5 | NA  | 235.7 | NA 
-------------------------------------------------------------------- 
1  | 7 | 17.7 | NA  | 1.1 | NA  | 187.1 | NA 
-------------------------------------------------------------------- 
1  | 8 | 23  | NA  | 1.4 | NA  | 257 | NA 
-------------------------------------------------------------------- 
1  | 9 | 17.2 | NA  | 1.4 | NA  | 170.5 | NA 
-------------------------------------------------------------------- 
1  | 10 | 12.1 | NA  | 0.6 | NA  | 162.1 | NA 
-------------------------------------------------------------------- 
2  | 1 | 72.2 | NA  | 0.9 | 1  | 2.4 | NA 
-------------------------------------------------------------------- 
2  | 2 | 54.3 | NA  | 0.8 | na  | 3.9 | NA 
-------------------------------------------------------------------- 
2  | 3 | 64.4 | NA  | 0.7 | NA  | 4.6 | 3 
-------------------------------------------------------------------- 
2  | 4 | 63.1 | NA  | 0.5 | NA  | 3.1 | NA 
-------------------------------------------------------------------- 
2  | 5 | 65.2 | NA  | 0.3 | NA  | 4.5 | NA 
-------------------------------------------------------------------- 
2  | 6 | 66.5 | NA  | 0.2 | NA  | 4.6 | 6 
-------------------------------------------------------------------- 
2  | 7 | 81.5 | 7  | 0.2 | NA  | 3.5 | NA 
-------------------------------------------------------------------- 

我知道dplyr:

df1 <- df %>% group_by(record) %>% mutate(day_tmax = nth(day_tmax,2)) 

但是,有没有办法做到这一点时,原始变量的位置而发生变化?

+0

你可以格式化你的数据,使其对齐!只需添加4个空格:) –

+0

@ joel.wilson对不起,我意识到这很烦人,我曾在问题中寻求过帮助。谢谢user2100721 – Annemarie

+0

嘿..你能解释一下你想如何输出吗? –

回答

2

你可以这样做:

df%>% 
    group_by(Record)%>% 
    mutate(diff_peak_t_lc=day[which.max(t)]-day[which.max(l/c)]) 

随着day[which.max(t)]给您day为其t正处于鼎盛时期,并day[which.max(l/c)]给您day为其l/c是在其高峰期。

编辑:关注Paul Hiemstra的建议。

+2

不错!你甚至可以用'which.max(1/c)'代替'1/c == max(1/c)'。 –

+0

@Haboryme太棒了,那正是我所希望的!非常感谢 – Annemarie