2016-11-29 6 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)]であなたにl/cがピークであるためdayを与えるtがピークであるためdayday[which.max(l/c)]を与えます。

編集:ポール・ヒムストラの提案に続きます。

+2

ニース! '1/c == max(1/c)'を 'which.max(1/c)'で置き換えることもできます。 –

+0

@Haboryme素晴らしい、それはまさに私が望んでいたものです!どうもありがとう – Annemarie

関連する問題