【问题标题】:I am trying to combine or aggregate 2 rows of data into 1 row by a certain criteria我正在尝试按特定标准将 2 行数据合并或聚合为 1 行
【发布时间】:2018-03-13 18:41:08
【问题描述】:

我正在尝试将 2 行合并为 1 行,并根据不同的列选择要保留的值。

ID  score  date     std error
123 87    1/15/2018    5
123 92    1/15/2018    10
155 78    3/10/2018    8
155 82    1/15/2018    7

在数据集中,我只希望每个 ID 有 1 行。当有两个不同的测试分数时,我希望将分数值保留为最接近当前日期的相应测试日期。如果日期相同,那么我想以最小的标准误差获得测试分数。

最终结果如下所示:

ID  score   test date   std error
123 87      1/15/2018   5
155 78     3/10/2018    8

花了几个小时,似乎无法弄清楚这一点。

谢谢

【问题讨论】:

  • 欢迎来到 SO,第一个问题很好。如果日期和 SD 都相同怎么办?

标签: r dplyr aggregate tidyr


【解决方案1】:

arrangedate(降序)和 std 错误(升序)然后从每个组中取出第一行:

df %>% 
    arrange(desc(as.Date(date, '%m/%d/%Y')), std.error) %>% 
    group_by(ID) %>% slice(1)

# A tibble: 2 x 4
# Groups:   ID [2]
#     ID score date      std.error
#  <int> <int> <fct>         <int>
#1   123    87 1/15/2018         5
#2   155    78 3/10/2018         8

【讨论】:

  • @Jake 如果您对答案感到满意,请接受:勾选您要接受的答案下方的复选标记
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 2012-05-01
  • 2012-06-26
  • 2021-02-08
  • 2012-06-20
  • 2021-01-18
  • 1970-01-01
相关资源
最近更新 更多