【问题标题】:Select rows from dataframe with unique combination of values from multiple columns从数据框中选择具有多列值的唯一组合的行
【发布时间】:2016-03-18 18:43:25
【问题描述】:

我在 R 中有一个 data.frame,它是多个赛季每支球队的棒球比赛结果的目录。其中一些列是teamopponent_teamdateresultteam_runsopponent_runs 等。我的问题是因为 data.frame 是每个团队的日志组合,每一行本质上在 data.frame 的其他地方都有另一行,它是该行的镜像。

例如

team  opponent_team  date           result team_runs opponent_runs
BAL   BOS            2010-04-05      W      5         4

在其他地方有另一行

team  opponent_team  date           result team_runs opponent_runs
BOS   BAL            2010-04-05      L      4         5

我想在dplyr 或类似代码中编写一些代码,以选择具有teamopponent_team 和@ 的唯一组合 的行987654332@ 列。我在这里强调单词组合,因为顺序无关紧要,我只是想摆脱镜像的行。

谢谢

【问题讨论】:

  • 您在寻找unique(df)吗?
  • 如果我们有来自每个团队的日志,并且每一行都有一个镜像,我们不能只取result == W 的数据帧的一个子集吗?这将为每个游戏保留 1 行。
  • 我认为这就是您所要求的:unique(df[,c("team","opponent_team","date")])。问题不完全清楚
  • @paulstey,出色的答案,如此简单明了,我什至从未想过这一点。谢谢!

标签: r select dataframe dplyr


【解决方案1】:

您是否尝试过 dplyr 的 distinct 函数?对于您的情况,它可能类似于

library(dplyr)
df %>% distinct(team, opponent_team, date)

另一种选择是在 dplyr 的 filter 函数中使用来自基本 R 的 duplicated 函数,如下所示。

filter(!duplicated(team, opponent_team, date)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    相关资源
    最近更新 更多