R 如何找到&;是否删除数据帧中的重复项?

R 如何找到&;是否删除数据帧中的重复项?,r,R,我有以下数据框,恰好是NBA选秀数据: draft_year draft_round teamid playerid draft_from 1961 1 Bos Pol1 Nan 2001 1 LA Ben2 Cal 1967 2 Min Mac2 Nan 2001 1 LA Ben2

我有以下数据框,恰好是NBA选秀数据:

 draft_year draft_round teamid playerid draft_from
 1961           1         Bos    Pol1      Nan
 2001           1         LA     Ben2      Cal
 1967           2         Min    Mac2      Nan
 2001           1         LA     Ben2      Cal
 2000           1         C      Sio1      Bud
 2000           1         C      Gio1      Bud

我只想在playerid中查找并删除那些重复的行。出于显而易见的原因,剩余的副本有着重要的用途,必须保留。

您可以通过使用
duplicated
unique()来实现这一点。


data.table
package中的
new_df在
unique
函数中有一个
by
参数

library(data.table)
unique(setDT(df), by = "playerid")
#    draft_year draft_round teamid playerid draft_from
# 1:       1961           1    Bos     Pol1        Nan
# 2:       2001           1     LA     Ben2        Cal
# 3:       1967           2    Min     Mac2        Nan
# 4:       2000           1      C     Sio1        Bud
# 5:       2000           1      C     Gio1        Bud

您也可以使用
dplyr

library(dplyr)
 unique(df, group_by="playerid")
 #  draft_year draft_round teamid playerid draft_from
 #1       1961           1    Bos     Pol1        Nan
 #2       2001           1     LA     Ben2        Cal
 #3       1967           2    Min     Mac2        Nan
 #5       2000           1      C     Sio1        Bud
 #6       2000           1      C     Gio1        Bud


这不是只返回一个向量吗?它只返回一列:)是的,我正在本地尝试,我有一段时间没有使用R。但是您可以通过使用
duplicated()
unique()
来实现。您的示例数据不是很好,因为简单的
unique(df)
也会返回所需的输出@David还有一种方法可以解释时间序列中的重复。想象一下上面的数据框,而不是你的草稿年。因此,由于明显的原因,在卡雷尔比赛期间,必须有一名球员为一支或多支球队比赛。但是我怎么才能发现一个球员在一年内被错误计算了两次,我不知道我是否理解你的问题。但是您可以通过添加任意多的变量到
by
,例如
unique(setDT(df),by=c(“播放年份”,playerid”)
要扩展到基数R中的多个变量,您可以这样做:
dat[!duplicated(dat[c(“播放年份”,“草稿年份”),]
 df %>%
 group_by(playerid) %>%
 filter(row_number()==1)