【问题标题】:Deleting all but the first row for a group of ids in dataframe [duplicate]删除数据框中除第一行以外的所有 ID [重复]
【发布时间】:2023-01-20 02:01:19
【问题描述】:

我有一个有 2 列的 df - game_id 和 score

game id   score
1           55
1           59 
1           62
1           71
2           74  
2           65
2           89
2           98

我希望结果是

game id     score
1            55
2            74

只是试图获取每个游戏 ID 的第一行

要删除的 for 和 if 循环

【问题讨论】:

  • 你可以在dplyr中使用df %>% group_by(game_id) %>% slice(1)。
  • subset(DF, !duplicated(game_id))

标签: r


【解决方案1】:

您可以在 group-first 行上使用函数 first 到 filter:

library(dplyr)
df %>%
  group_by(game_id) %>%
  filter(score == first(score))

数据:

df <- data.frame(
  game_id  = c(1,1,1,1,2,2,2,2),
  score = c(55,59,62,71,74,65,89,98)
)

【讨论】:

    【解决方案2】:

    一种基础R使用 aggregate 的方法

    aggregate(. ~ `game id`, df, "[", 1)
      game id score
    1       1    55
    2       2    74
    

    数据

    df <- structure(list(`game id` = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), 
        score = c(55L, 59L, 62L, 71L, 74L, 65L, 89L, 98L)), 
    class = "data.frame", row.names = c(NA, 
    -8L))
    

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 2013-03-23
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2022-06-27
      • 2021-01-28
      • 2021-10-10
      • 1970-01-01
      相关资源
      最近更新 更多