在具有每个对象的多个观察值的数据集中。对于每个主题,我希望选择具有最大值'pt‘的行。例如,使用以下数据集:
ID    <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)
group <- data.frame(Subject=ID, pt=Value, Event=Event)
#   Subject pt Event
# 1       1  2     1
# 2       1  3     1
# 3       1  5     2 # max 'pt' for Subject 1
# 4       2  2     1
# 5       2  5     2
# 6       2  8     1
# 7       2 17     2 # max 'pt' for Subject 2
# 8       3  3     2
# 9       3  5     2 # max 'pt' for Subject 3对象1、2和3分别具有最大的pt值5、17和5。
我如何首先找到每个对象的最大pt值,然后将此观察结果放入另一个数据框中?得到的数据帧应该只具有每个主题的最大pt值。
发布于 2014-07-04 00:06:49
dplyr解决方案:
library(dplyr)
ID <- c(1,1,1,2,2,2,2,3,3)
Value <- c(2,3,5,2,5,8,17,3,5)
Event <- c(1,1,2,1,2,1,2,2,2)
group <- data.frame(Subject=ID, pt=Value, Event=Event)
group %>%
    group_by(Subject) %>%
    summarize(max.pt = max(pt))这将产生以下数据帧:
  Subject max.pt
1       1      5
2       2     17
3       3      5https://stackoverflow.com/questions/24558328
复制相似问题