遍历数据表中的相同行

时间:2019-02-12 21:12:06

标签: r

我有一个包含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"))

列1中的值也是字符,并且 我需要遍历此列中的每一行。如果它们相同,则保留它们中的最后一个,并从最后两列中检索该位置的相应值。例如,对于id1,我将仅保留第三个值,并从C中检索col2,并从CC中检索col3。 如果有唯一的行,只需按原样检索col2col3

我需要的输出应该是:

col1    col2   col3

id1     C      CC

id6     D      DD

id3     F      FF

我尝试了以下类似操作,并收到“如果、、、在需要TRUE / FALSE时缺少值的错误。

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
 }
}

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您可能想要duplicated答案。只是因为我喜欢我的dplyr工作流程:

library(dplyr)

dt %>%
  group_by(col1) %>%
  summarise_all(last)

一个陷阱是它将按col1排序。