【问题标题】:R !Duplicate by Factor LevelR !按因子水平重复
【发布时间】:2015-05-20 21:00:13
【问题描述】:

有一种方法可以删除重复的行...

http://www.cookbook-r.com/Manipulating_data/Finding_and_removing_duplicate_records/

我有兴趣做同样的事情,但我的数据框中的因子级别。

test <- data.frame(fact = c('a','a','a','b','b','b','b','c','c'), id = c('1','1','2','1','2','2','3','1','2'), value = c(1:9))

我想缩减我的测试数据框以包含以下内容....

  fact id value
1    a  1     1
3    a  2     3
4    b  1     4
5    b  2     5
7    b  3     7
8    c  1     8
9    c  2     9

也就是说,只有第一行 id 不重复。 问题是它只会重复因子级别。

【问题讨论】:

    标签: r dataframe duplicates


    【解决方案1】:
    library(data.table)    
    setDT(test)[,.SD[!duplicated(id)],by=fact]
    
       fact id value
    1:    a  1     1
    2:    a  2     3
    3:    b  1     4
    4:    b  2     5
    5:    b  3     7
    6:    c  1     8
    7:    c  2     9
    

    【讨论】:

    • 感谢@Arun 的编辑和替代解决方案。
    【解决方案2】:
    library(dplyr)
    test%>%group_by(fact,id)%>%distinct(id)
    

    【讨论】:

    • 谢谢。你能解释一下 %>% 在这种情况下在做什么吗?
    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2016-07-19
    相关资源
    最近更新 更多