首页 > 解决方案 > 迭代数据表中的相同行

问题描述

我有一个包含 3 列的数据表,如下所示:

dt <- data.table(
col1 = c("id1","id1","id1","id6","id3","id3"), 
col2 = c("A", "B", "C", "D", "E", "F"), 
col3 = c("AA", "BB", "CC", "DD", "EE", "FF"))

col 1 中的值也是字符,我需要遍历此列中的每一行。如果它们相同,则保留最后一个,并从最后两列中检索该位置的相应值。例如,因为id1我将只保留第三个值并C从. 如果有唯一的行,只需按原样检索and 。col2CCcol3col2col3

我需要的输出应该是:

col1    col2   col3

id1     C      CC

id6     D      DD

id3     F      FF

我尝试了类似下面的方法并得到“如果需要 TRUE/FALSE 的 if ,,, 缺失值出错。

for (i in nrow(dt)) {
 if (dt[i,1]!=dt[i+1,1]){
  dt[i, 2] = dt[i,2]
}
  else {
    dt[i,2] <- dt$QUESTION
 }
}

关于如何解决这个问题的任何想法?我不必坚持使用数据表

谢谢

标签: r

解决方案


有很多方法可以解决这个问题,但一种简单的方法是使用检查重复项duplicated并保留从末尾开始的第一个值:

dt[!duplicated(dt$col1, fromLast = T),]

推荐阅读