2017-12-13 8 views
2

私は現在、観察が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 

ありがとうございます!

答えて

2

我々はmutate_ifを行い、その後、distinct

library(dplyr) 
df %>% 
    group_by(ID) %>% 
    mutate_if(is.double, mean) %>% 
    distinct(ID, value, .keep_all = TRUE) 
# A tibble: 4 x 4 
# Groups: ID [4] 
#  ID  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 
+1

ありがとう!私が130以上の変数に使っていたのは: 'df%>%group_by(ID)%>%mutate_if(is.double、mean)%>%distinct(ID、is.double、.keep_all = TRUE)' –

1

double個以上の変数を意味するのは重要ですか?ここではあなたの例のために動作するコードは、次のとおりです。

df %>% group_by(ID) %>% summarise(value = mean(value), type = first(type), hour = first(hour)) 

# A tibble: 4 x 4 
    ID  value type hour 
    <int>  <dbl> <fctr> <chr> 
1  1 3.312154 banana H1 
2  2 5.812154 poireau H3 
3  3 8.312154 melon H5 
4  4 10.690296 kiwi H7 
+0

感謝を使用することができます!これを行う方法ですが、私は3種類の135変数を持っています。だから、私は変数型で自動的に動作するものを得ることができると期待していました。 –

+0

それから@akrunの解決策がうまくいくかもしれない – Sush

関連する問題