首页 > 解决方案 > 修改DataFrame,删除double Data with for each,R

问题描述

我即将修改数据框,因为它包含双值

Data Frame:                                           
Id Name Account                                                    
1    X    1                                       
1    Y    2                                             
1    Z    3                                 
2    J    1                                                
2    T    4                                                 
3    O    2

因此,当有多行相同时,Id我只想保留最后一行。所需的输出将是

Id Name Account                                                                                             
1    Z    3                                                                          
2    T    4                                                 
3    O    2

这是我当前的代码:

 for (i in 1:(nrow(mylist)-1)) {

    if(mylist$Id[c(i)] == mylist$Id[c(i+1)]){
      
      mylist <- mylist[-c(i), ]
      
      
    } 
  }

我在删除一行时遇到问题,因为所有其他行的索引都较低,并且系统在下一步中跳过了行。

标签: rdataframe

解决方案


您可以使用包轻松完成此操作dplyr

library(dplyr)

mylist %>%
 group_by(Id) %>%
 slice(n()) %>%
 ungroup()

首先你 group_byId列。之后,您只选择每个组的最后一个条目 ( slice(n()))。


推荐阅读