首页 > 解决方案 > 如何将数据从整洁的格式转换为独特的格式?

问题描述

我有一个数据集,其中有描述感兴趣时间段的日期,以及可能落在感兴趣时间段之内或之外的事件(在我的玩具示例中为“测试”)。这些事件也有时间和一些二分法特征。

我的合作者要求我转换这种格式的数据:

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"))

当前状态

到这种格式:

期望的状态

我不确定如何使用 R 完成这种转换或一组转换,但我相信这是可能的。

标签: rtidyverse

解决方案


尝试以下

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“欲望”状态不完全相同。

希望这可以帮到你。


推荐阅读