Перебирать идентичные строки в таблицах данных - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть таблица данных с 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.Если есть уникальные строки, просто извлеките col2 и col3 такими, какие они есть.

Вывод, который мне нужен, должен быть следующим:

col1    col2   col3

id1     C      CC

id6     D      DD

id3     F      FF

Я попробовал что-то подобное ниже и получил "Ошибка, если ,,, пропущено значение, где требуется ИСТИНА / ЛОЖЬ.

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 голосов
/ 13 февраля 2019

Ответ duplicated, скорее всего, то, что вы хотите.Но только потому, что мне нравятся мои dplyr рабочие процессы:

library(dplyr)

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

Единственный улов в том, что он будет сортироваться по col1.

0 голосов
/ 13 февраля 2019

Есть много способов подойти к этому, но простой способ - проверить наличие дубликатов, используя duplicated и сохранить первое значение, начиная с конца:

dt[!duplicated(dt$col1, fromLast = T),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...