Как преобразовать данные из аккуратного в уникальный формат? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть набор данных, в котором есть даты, описывающие интересующий период времени, а также события («Тесты» в моем примере с игрушкой), которые могут находиться внутри или вне интересующего периода. У событий также есть время и некоторые дихотомические характеристики.

Мой соавтор попросил меня преобразовать данные из этого формата:

structure(list(ID = c(1, 1, 2, 3), StartDate = structure(c(315878400, 
315878400, 357696000, 323481600), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), EndDate = structure(c(316137600, 316310400, 
357955200, 323654400), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    TestDateTime = structure(c(316135500, 315797700, 357923700, 
    323422560), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    TestName = c("Test1", "Test2", "Test1", "Test3"), Characteristic = c("Fast", 
    "Slow", "Fast", "Slow")), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame"))

текущее состояние

в этот формат:

желаемое состояние

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

1 Ответ

0 голосов
/ 05 мая 2020

попробуйте следующее

library(dplyr)

data %>%
    select(-c(StartDate,EndDate)) %>% # Remove extra columns
    tidyr::spread(TestDate, TestTime) %>% # Spread df to long form
    select(-Characteristic, everything()) %>% # Move Characteristic to the end of the df
    group_by(ID) %>% # Group by ID and
    group_split() # split it

Примите к сведению, что столбцы даты в последнем df не точны, как состояние «желание».

Надеюсь, это поможет вам.

...