私は現在、観察が2倍測定されたラボ実験で生成されたデータセットを作成しています。複製された行とは、元の変数を意味します。
私が観測されたオブジェクトのID
、結果のvalue
、持っているオブジェクトのtype
、それは(私の言いたい120他のカテゴリ、文字や数値変数)を測定したhour
。ここでは単純化されたデータフレームである:
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
私の目標は、一つの値だけ、1つのIDを維持するが、それでも他の変数を維持するためにIDによって値の平均デを計算することです。私が試したことだった。それだけで、二重の値を意味するが、どのように私は他の列を保つことができます。
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
あなたが見ることができるように、私のコマンドに応答dplyr?
hour
フィールドの場合は、表の最初の値を保持したいと考えています。望ましい出力は次のようになります。
# 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
ありがとうございます!
ありがとう!私が130以上の変数に使っていたのは: 'df%>%group_by(ID)%>%mutate_if(is.double、mean)%>%distinct(ID、is.double、.keep_all = TRUE)' –