【问题标题】:Find minimum y value and its corresponding x value for each id [duplicate]查找每个 id 的最小 y 值及其对应的 x 值 [重复]
【发布时间】:2018-03-08 12:12:30
【问题描述】:

我想找出每个id出现的最小SkinTemp值和对应的时间。

df<-data.frame(Time=seq(65),
               SkinTemp=rnorm(65,37,0.5),
               id=rep(1:10,c(5,4,10,6,7,8,9,8,4,4)))

我已成功找到每个组的最小值,但不太清楚如何找到相应的时间:

a<-aggregate(data=df,SkinTemp~id, min)

df %>% group_by(id) %>% summarise(minSkinTemp = min(SkinTemp))

我缺少像 which.min 这样的东西,但我还没有找到任何与聚合一起使用的示例。有什么想法吗?

【问题讨论】:

标签: r dplyr aggregate


【解决方案1】:

我们可以slicewhich.min 得到按'id'分组后'SkinTemp'最小值的行

library(dplyr)
df %>%
    group_by(id) %>%
    slice(which.min(SkinTemp))

【讨论】:

  • 非常感谢! slice 对我来说是一个新的!只是一个简单的问题:既然它给了我一个 tibble,我应该在每次使用 dplyr 后将它转换回 data.frame 吗?例如如果我要使用 ggplot 等。
  • @HCAI ggplottibble 一起属于 tidyverse 包。所以,它应该工作。如果没有,那么在 slice 之后,使用 %&gt;% as.data.frame
猜你喜欢
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2018-01-29
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多