2017-12-13 18 views
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 

내 목표는 드 계산, 하나 개의 ID 만 하나 개의 값을 유지하지만 여전히 다른 변수를 유지하기 위해 ID에 의한 값의 의미하는 것입니다. 내가 시도한 것은 다음과 같습니다 :

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