r - 如何将数据从整洁的格式转换为独特的格式?
问题描述
我有一个数据集,其中有描述感兴趣时间段的日期,以及可能落在感兴趣时间段之内或之外的事件(在我的玩具示例中为“测试”)。这些事件也有时间和一些二分法特征。
我的合作者要求我转换这种格式的数据:
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 完成这种转换或一组转换,但我相信这是可能的。
解决方案
尝试以下
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
“欲望”状态不完全相同。
希望这可以帮到你。