R: Получив все даты, произошла уникальная строка и сохранив ее в переменной - PullRequest
0 голосов
/ 20 апреля 2020

Я извлекаю данные из таблицы искр и хочу узнать даты появления уникальной строки, а затем сохраняю эти даты в новой переменной. Например, если данные:

ID     amt     status     date
A      1000    A          2019-01-01
A      1000    A          2019-02-01
B      1000    I          2019-01-01
B      3000    A          2019-02-01
B      3000    A          2019-03-01

Я хотел бы видеть:

ID     amt     status    var
A      1000    A         2019-01-01|2019-02-01
B      1000    I         2019-01-01
B      3000    A         2019-02-01|2019-03-01

Спасибо и признателен за вашу помощь

Ответы [ 3 ]

0 голосов
/ 20 апреля 2020

можно использовать summarise

df %>%
  group_by(ID, amt, status) %>%
  summarise(date = paste(date, collapse = "|"))
0 голосов
/ 20 апреля 2020

Мы также можем сделать

library(stringr)
library(dplyr)
df %>%
  group_by(ID, amt, status) %>%
  mutate(date = str_c(date, collapse = "|")) %>%
  distinct()
0 голосов
/ 20 апреля 2020

Вы можете group_by(ID, amt, status), а затем mutate date, чтобы содержать все даты, разделенные |.

library(tidyverse)

df %>%
  group_by(ID, amt, status) %>%
  mutate(date = paste(date, collapse = "|")) %>%
  distinct()

Output

  ID      amt status date                 
  <fct> <int> <fct>  <chr>                
1 A      1000 A      2019-01-01|2019-02-01
2 B      1000 I      2019-01-01           
3 B      3000 A      2019-02-01|2019-03-01

Или базовая опция R:

aggregate(date ~ ID + amt + status, df, paste, collapse = "|")

или data.table:

data.table(df)[,lapply(.SD, paste, collapse = "|"), .(ID, amt, status)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...