Ich arbeite gerade an einem Datensatz, der während eines Laborexperiments erzeugt wurde, wo Beobachtungen verdoppelt wurden (zwei Mal gemessen).Doppelte Zeilen bedeutet mit Originalvariablen
Ich habe ID
des beobachteten Objekts, die value
der Ergebnisse, die type
des Objekts und die hour
es gemessen wurde (+120 andere kategorische, Zeichen und numerischen Variablen, die ich meine, wollen). Hier ist ein vereinfachtes Datenrahmen:
library(dplyr)
A <- c(1,1,2,2,3,3,4)
B <- A*2.5+(rnorm(2,A[A],sd = 0.2))
C <- c("banana","banana","poireau","poireau","melon","melon","kiwi")
D <- c("H1","H2","H3","H4","H5","H6","H7")
df <-data_frame(ID=as.integer(A),value=B,type=factor(C), hour=as.character(D))
df
# A tibble: 7 x 4
ID value type hour
<int> <dbl> <fctr> <chr>
1 1 3.337352 banana H1
2 1 3.398814 banana H2
3 2 5.837352 poireau H3
4 2 5.898814 poireau H4
5 3 8.337352 melon H5
6 3 8.398814 melon H6
7 4 10.837352 kiwi H7
Mein Ziel ist der Werte von ID, um zu berechnen de bedeuten nur einen Wert zu halten, eine ID, aber immer noch die anderen Variablen behalten. was ich versucht war:
df %>% group_by(ID) %>% summarise_if(is.double, mean)
# A tibble: 4 x 2
ID value
<int> <dbl>
1 1 3.368083
2 2 5.868083
3 3 8.368083
4 4 10.837352
wie Sie sehen können, dplyr auf mein Kommando reagieren: es nur doppelte Werte bedeutet, aber wie kann ich andere Spalten halten?
wie für die hour
Feld, ich möchte den ersten Wert in der Tabelle zu halten. die gewünschte Ausgabe wäre:
# A tibble: 4 x 4
ID `mean(value)` type hour
<int> <dbl> <fctr> <chr>
1 1 3.368083 banana H1
2 2 5.868083 poireau H3
3 3 8.368083 melon H5
4 4 10.837352 kiwi H7
Vielen Dank!
Vielen Dank! Was ich für meine 130+ Variablen verwendet habe, war: 'df%>% group_by (ID)%>% mutate_if (is.double, mean)%>% distinct (ID, is.double, .keep_all = TRUE)' –