首页 > 解决方案 > R:将每小时数据透视到列

问题描述

我对 r 很陌生,我正在尝试操纵公交时刻表数据。我想在附图之后显示时间这里

我设法从 1. 到 2. 但我现在正在努力达到 3.

到目前为止,这是我的代码:

#1
timetable <- as.data.frame(c("11:34","11:46","12:12","13:16","14:45","15:54","16:22"))
colnames(timetable) <- 'time'

#2
library(stringr)
new.timetable <- str_split_fixed(timetable$time,":",2) %>% as.data.frame()
colnames(new.timetable) <- c('Hours', 'Minutes')

#3 ??

有没有办法将小时作为列并将分钟作为数据放在它下面?

非常感谢您的帮助。最好的,

标签: rpivot

解决方案


这是否符合您的目的?

#I have added one value to your timetable object
timetable <- as.data.frame(c("11:34","11:46","12:12","13:16","14:45","15:54","16:22", "11:47")) # added one value

library(tidyverse)
#3.
new.timetable %>% 
  group_by(Hours) %>% 
  mutate(id = row_number())%>%
  ungroup() %>%
  pivot_wider(id_cols=id, names_from = Hours, values_from = Minutes, values_fn = list) %>% 
  select(-id) %>%
  unnest(1:6)

# A tibble: 3 x 6
  `11`  `12`  `13`  `14`  `15`  `16` 
  <chr> <chr> <chr> <chr> <chr> <chr>
1 34    12    16    45    54    22   
2 46    NA    NA    NA    NA    NA   
3 47    NA    NA    NA    NA    NA 


推荐阅读