Поиск значения в фрейме данных с использованием group_by и условия столбца - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь получить дату из фрейма данных с помощью оператора group_by, но я не знаю, как это можно сделать в R.

У меня есть фрейм данных следующим образом:

 A   B           C          D  E
 1  XX  9999-12-31 2005-11-01  0
 2  XX  2003-10-31 2002-01-01  3
 2  XX  2002-12-31 2001-03-01  3
 2  XX  2001-02-28 1998-07-11  0
 2  XX  1998-07-10 1993-04-01  3
 3  XX  .....................  3
 3  XX  .....................  3
 3  XX  2003_12-31 2003-01-01  3
 4  XX  ..... 

Я хотел бы выбрать значение в столбце «D» непосредственно над 0 в столбце «E» для каждого идентификатора в столбце «A». Если есть только ноль, то не имеет значения, если ясохранить результат или нет.в этом случае я хотел бы иметь:

  A   B   C                   D  E
  1   XX  9999-12-31 2005-11-01  0  <-- Doesn't actually matters if it stays or not
  2   XX  2002-12-31 2001-03-01  3
  3   XX  2003_12-31 2003-01-01  3
  4   XX  ..... 

Даты в порядке, но я не могу найти способ установить значение или, по крайней мере, удалить строки ниже первого обнаруженного нуля (Предполагая, чточто может быть несколько нулей, но это не имеет значения, так как даты в порядке) Заранее спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Использование ddply() из plyr пакета в R.

ddply(.data = df,.variables = "A",function(dt){
    zeroind=which(dt$E==0)
    if(length(zeroind)>0){
        if(zeroind[1]>1){
            dt[(zeroind[1]-1),]
        }else{
            dt[zeroind[1],]
        }
    }else{
        dt[nrow(dt),]
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...