Поменяйте местами результаты со значения прошлых лет в том же месяце, если комбинация месяц-год не равна месяцу-году системы - PullRequest
0 голосов
/ 24 октября 2019

У меня есть таблица под

+----+-------+---------+
| ID | VALUE |  DATE   |
+----+-------+---------+
|  1 |    10 | 2019-09 |
|  1 |    12 | 2018-09 |
|  2 |    13 | 2019-10 |
|  2 |    14 | 2018-10 |
|  3 |    67 | 2019-01 |
|  3 |    78 | 2018-01 |
+----+-------+---------+

Я хочу иметь возможность поменять столбец VALUE для всех идентификаторов, где DATE! = Год-месяц системной даты и если DATE == год-месяц системной даты, затем просто сохраните значение этого года

, итоговая таблица мне нужна как под

+----+-------+---------+
| ID | VALUE |  DATE   |
+----+-------+---------+
|  1 |    12 | 2019-09 |
|  2 |    13 | 2019-10 |
|  3 |    78 | 2019-01 |
+----+-------+---------+

1 Ответ

0 голосов
/ 24 октября 2019

Как заметили Джон и Мориц, ваш пример неясен: вы не указываете, что для вас является неправильным форматом, и упоминаете «текущий год», но, например, не описываете ожидаемый результат на следующий год.

Вот попытка кода фактически ответить на ваш вопрос:

library(dplyr)

x = read.table(text = "
 ID  VALUE   DATE   
  1     10  2019-09 
  1     12  2018-09 
  1     12  2018-09-04 
  1     12  2018-99 
  2     13  2019-10 
  2     14  2018-10 
  3     67  2019-01 
  3     78  2018-01 
", header=T) 


x %>% 
  mutate(DATE = paste0(DATE, "-01") %>% as.Date("%Y-%m-%d")) %>% 
  group_by(ID) %>% 
  filter(DATE==max(DATE, na.rm=T))

Я вставил две строки с «неправильным» форматом (по мне) и трактовал «текущий год» какМаксимальный год, который вы можете найти в столбце для каждого идентификатора.

Это может быть неверным утверждением, но мне нужно больше информации, чтобы лучше ответить на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...