2016-10-19 67 views
0

我有一個數據集,看起來像這樣[R dplyr GROUP_BY價值觀崩潰並粘貼

Id Subject Date  Vitals  Value 
10 John  2001-05-29 HeartRate 65 
10 John  2001-05-29 HeartRate 68 
10 John  2001-05-29 BP-Arterial 48 
10 John  2001-05-29 PulseRate 64 
34 Pete  2005-08-15 HeartRate 68 
34 Pete  2005-08-15 BP-Arterial 56 
10 John  2004-09-25 HeartRate 65 
10 John  2004-09-25 BP-Arterial 64 
10 John  2004-09-25 PulseRate 63 
34 Pete  2007-07-21 BP-Arterial 68 
34 Pete  2007-07-21 PulseRate 56 

我想要做的兩件事情,

1)生命體徵組。 2)計算在特定日期每個ID測量的維生素的數量(ID + Date)並摺疊並粘貼這些值,如下所示。

Vitals  Series 
HeartRate 2,1,1 
BP-Arterial 1,1,1,1 
PulseRate 1,1,1 

HeartRate系列列下的值是因爲2, 1, 1心率測量

兩次對2001年5月29日ID 10,

一次ID 34上2005-08-15和

於2004-09-24

不知道如何摺疊和使用dplyr任何幫助,粘貼這些值是MUC

一次ID 10 h讚賞。

回答

5

計數測定爲每個ID上的特定日期(ID +日期)

這意味着由所有三個需要組生命體徵的數量。然後,我們可以通過只爲命脈最後崩潰重組:

dat %>% group_by(Vitals, Id, Date) %>% 
    summarize(n = n()) %>% 
    ungroup() %>% 
    group_by(Vitals) %>% 
    summarize(Series = paste(n, collapse = ',')) 
# # A tibble: 3 × 2 
#  Vitals Series 
#  <fctr> <chr> 
# 1 BP-Arterial 1,1,1,1 
# 2 HeartRate 2,1,1 
# 3 PulseRate 1,1,1 
+0

這簡直是完美的。謝謝 – bison2178

0

隨着dplyrrle即運行長度編碼見?rle更多細節

library(dplyr) 

newDF = DF %>% 
    group_by(Id,Date) %>% 
    do(.,data.frame(Series=paste(rle(.$Vitals)$lengths,collapse=","),stringsAsFactors=FALSE)) %>% 
    as.data.frame() 

newDF 
# Id  Date Series 
#1 10 2001-05-29 2,1,1 
#2 10 2004-09-25 1,1,1 
#3 34 2005-08-15 1,1 
#4 34 2007-07-21 1,1 
+0

@Ossan,我期待着爲Vitals而不是ID創作的系列 – bison2178