2016-11-29 3 views
1

Ich habe einen Datensatz von wiederholten Messungen über Tage für Variablen t, l und c. Ich versuche, den Unterschied in Tagen zwischen den Spitzen für t und l/c zu berechnen. Ich habe es geschafft, den Tag der Spitzenmessung zu finden, aber ich bin mir nicht sicher, wie ich diese alle auf der gleichen Linie bekommen kann, damit ich den Tagunterschied berechnen kann.verschiedene Zeilen aus gruppierten Daten auswählen

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 
-------------------------------------------------------------------- 

Ich weiß, in dplyr:

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

Aber gibt es eine Möglichkeit, dies zu tun, wenn die Position der ursprünglichen Variablen verändert?

+0

könnten Sie Ihre Daten so formatieren, dass sie gut ausgerichtet sind! füge einfach 4 Leerzeichen hinzu :) –

+0

@ joel.wilson Entschuldigung, mir ist klar, dass das nervt, ich habe in der Frage um Hilfe gebeten. Danke user2100721 ​​ – Annemarie

+0

hey..could erklären Sie mehr auf, wie Sie möchten, dass die Ausgabe wie ist? –

Antwort

2

Sie könnten tun:

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

Mit day[which.max(t)] geben Sie die day für die t an seiner Spitze ist und day[which.max(l/c)] geben Ihnen die day für die l/c an seiner Spitze ist.

bearbeiten: Verfolgt Paul Hiemstras Vorschlag.

+2

Schön! Sie könnten sogar '1/c == max (1/c)' durch 'which.max (1/c)' ersetzen. –

+0

@Haboryme Fantastisch, genau das habe ich mir erhofft! Vielen Dank – Annemarie

Verwandte Themen