如何在每個組中選擇具有最大值的行目前我有一個問題如下。在每個主題存在多個觀察的數(shù)據(jù)集中,我希望在該數(shù)據(jù)集的子集中只選擇記錄的最大數(shù)據(jù)。例如,對于數(shù)據(jù)集,如下所示: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)被試1、2和3的最大pt值分別為5、17和5。首先,如何找到每個主題的最大pt值,然后將這個觀察結(jié)果放到另一個數(shù)據(jù)框架中?這意味著這個子集對于每個主題只有最大的pt值。
3 回答

森林海
TA貢獻2011條經(jīng)驗 獲得超2個贊
data.table
require(data.table) ## 1.9.2group <- as.data.table(group)
pt
group[group[, .I[pt == max(pt)], by=Subject]$V1]# Subject pt Event# 1: 1 5 2# 2: 2 17 2# 3: 3 5 2
pt
:
group[group[, .I[which.max(pt)], by=Subject]$V1]# Subject pt Event# 1: 1 5 2# 2: 2 17 2# 3: 3 5 2

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
group %>% group_by(Subject) %>% top_n(1, pt)
Source: local data frame [3 x 3] Groups: Subject [3] Subject pt Event (dbl) (dbl) (dbl) 1 1 5 2 2 2 17 2 3 3 5 2

蕪湖不蕪
TA貢獻1796條經(jīng)驗 獲得超7個贊
使用的較短的解決方案data.table:
setDT(group)[, .SD[which.max(pt)], by=Subject]
# Subject pt Event
# 1: 1 5 2
# 2: 2 17 2
# 3: 3 5 2
- 3 回答
- 0 關(guān)注
- 545 瀏覽
添加回答
舉報
0/150
提交
取消