r - 如何在 R 中按日期合并/堆叠观察结果

标签 r dataframe date

我有一个像这样的数据框

date             X1 X2 X3
4/16/2019 0:00   1  2  3
4/16/2019 7:00   1  2  3
4/172019 0:00    1  2  3
4/17/2019 7:00   1  2  3

我想得到

date        time     X1      X2      X3
4/16/2019   c(0,7)   c(1,1)  c(2,2)  c(3,3)
4/17/2019   c(0,7)   c(1,1)  c(2,2)  c(3,3)

其中 X1 是一个列表,X1[[1]] 是一个向量,即 c(1,1)

有没有一种有效的方法来实现这一目标?谢谢!

最佳答案

在空格 (\\s+) 处将“日期”拆分为“日期”、“时间”列,按“日期”分组,然后汇总 所有列,将它们包装在列表

library(dplyr)
library(tidyr)
library(stringr)
df1 %>%   
   separate(date, into = c('date', 'time'), sep = '\\s+') %>%
   mutate(time = as.numeric(str_replace(time, ":", ".")) %>%
   group_by(date) %>%
   summarise(across(everything(), ~ list(.)))

-输出

# A tibble: 2 × 5
  date      time      X1        X2        X3       
  <chr>     <list>    <list>    <list>    <list>   
1 4/16/2019 <dbl [2]> <int [2]> <int [2]> <int [2]>
2 4/17/2019 <dbl [2]> <int [2]> <int [2]> <int [2]>

数据

df1 <- structure(list(date = c("4/16/2019 0:00", "4/16/2019 7:00", 
"4/17/2019 0:00", 
"4/17/2019 7:00"), X1 = c(1L, 1L, 1L, 1L), X2 = c(2L, 2L, 2L, 
2L), X3 = c(3L, 3L, 3L, 3L)), 
class = "data.frame", row.names = c(NA, 
-4L))

关于r - 如何在 R 中按日期合并/堆叠观察结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69606947/

相关文章:

r - 从 R 连接到共享点站点

R - frbs 包错误 - 维数不正确

python - Pandas 数据框 : how to group by values in a column and create new columns out of grouped values

javascript - angular js日期输入格式

php - 在PHP中查找格式为 'mm/dd/yyyy'的两个日期之间的天数

c++ - DD/MM/YYYY 输入验证

r - 评估结果模拟数据

r - ggplot 中按比例大小的箭头

python - 按字符串名称 Pandas 求和

python - 通过 Pandas 数据帧运行 nltk sent_tokenize