在数据框列表中按天对数据框的行进行分组

Grouping rows of a dataframe by day in a list of dataframes

我有以下数据框

>dput(x)
structure(list(id = c("gii3myemeqez57e", "g4k42mvj1xo7x6v", 
"gii3myemeqez57e", "gii3myemeqez57e", "qwfw4nta0j5yf6x", "n8ygk9pdlxjvxh1", 
"gii3myemeqez57e", "w72qyv1ybi1sf9n", "w72qyv1ybi1sf9n", "n8ygk9pdlxjvxh1"
), p = c("ilcaffe.tv", "youtube.com", "ilcaffe.tv", 
"ilcaffe.tv", "il24.it", "tecnicadellascuola.it", "ilcaffe.tv", 
"change.org", "change.org", "tecnicadellascuola.it"), z = c("2018-02-18 17:50:00.000", 
"2018-02-07 10:20:00.000", "2018-02-18 17:50:00.000", "2018-02-18 17:50:00.000", 
"2018-03-03 21:50:00.000", "2018-02-20 00:00:00.000", "2018-02-18 17:50:00.000", 
"2018-02-22 08:30:00.000", "2018-02-22 08:30:00.000", "2018-02-20 00:00:00.000"
)), row.names = c(NA, 10L), class = "data.frame")

即:

                 id          p                                    z
1   gii3myemeqez57e ilcaffe.tv              2018-02-18 17:50:00.000
2   g4k42mvj1xo7x6v youtube.com             2018-02-07 10:20:00.000
3   gii3myemeqez57e ilcaffe.tv              2018-02-18 17:50:00.000
4   gii3myemeqez57e ilcaffe.tv              2018-02-18 17:50:00.000
5   qwfw4nta0j5yf6x il24.it                 2018-03-03 21:50:00.000
6   n8ygk9pdlxjvxh1 tecnicadellascuola.it   2018-02-20 00:00:00.000
7   gii3myemeqez57e ilcaffe.tv              2018-02-18 17:50:00.000
8   w72qyv1ybi1sf9n change.org              2018-02-22 08:30:00.000
9   w72qyv1ybi1sf9n change.org              2018-02-22 08:30:00.000
10  n8ygk9pdlxjvxh1 tecnicadellascuola.it   2018-02-20 00:00:00.000

我想在数据框列表中重新排列此数据框,将列 z 中显示同一天的行分组。例如,第 1、3、4 和 7 行应形成一个数据框;第 2 行应形成另一个数据框,依此类推。

x <- structure(list(id = c("gii3myemeqez57e", "g4k42mvj1xo7x6v", 
                           "gii3myemeqez57e", "gii3myemeqez57e", "qwfw4nta0j5yf6x", "n8ygk9pdlxjvxh1", 
                           "gii3myemeqez57e", "w72qyv1ybi1sf9n", "w72qyv1ybi1sf9n", "n8ygk9pdlxjvxh1"), 
                    p = c("ilcaffe.tv", "youtube.com", "ilcaffe.tv", 
                          "ilcaffe.tv", "il24.it", "tecnicadellascuola.it", "ilcaffe.tv", 
                          "change.org", "change.org", "tecnicadellascuola.it"), 
                    z = c("2018-02-18 17:50:00.000", 
                          "2018-02-07 10:20:00.000", "2018-02-18 17:50:00.000", "2018-02-18 17:50:00.000", 
                          "2018-03-03 21:50:00.000", "2018-02-20 00:00:00.000", "2018-02-18 17:50:00.000", 
                          "2018-02-22 08:30:00.000", "2018-02-22 08:30:00.000", "2018-02-20 00:00:00.000"
                    )), row.names = c(NA, 10L), class = "data.frame")

dplyr::group_split(x, day = as.Date(z))
#> <list_of<
#>   tbl_df<
#>     id : character
#>     p  : character
#>     z  : character
#>     day: date
#>   >
#> >[5]>
#> [[1]]
#> # A tibble: 1 × 4
#>   id              p           z                       day       
#>   <chr>           <chr>       <chr>                   <date>    
#> 1 g4k42mvj1xo7x6v youtube.com 2018-02-07 10:20:00.000 2018-02-07
#> 
#> [[2]]
#> # A tibble: 4 × 4
#>   id              p          z                       day       
#>   <chr>           <chr>      <chr>                   <date>    
#> 1 gii3myemeqez57e ilcaffe.tv 2018-02-18 17:50:00.000 2018-02-18
#> 2 gii3myemeqez57e ilcaffe.tv 2018-02-18 17:50:00.000 2018-02-18
#> 3 gii3myemeqez57e ilcaffe.tv 2018-02-18 17:50:00.000 2018-02-18
#> 4 gii3myemeqez57e ilcaffe.tv 2018-02-18 17:50:00.000 2018-02-18
#> 
#> [[3]]
#> # A tibble: 2 × 4
#>   id              p                     z                       day       
#>   <chr>           <chr>                 <chr>                   <date>    
#> 1 n8ygk9pdlxjvxh1 tecnicadellascuola.it 2018-02-20 00:00:00.000 2018-02-20
#> 2 n8ygk9pdlxjvxh1 tecnicadellascuola.it 2018-02-20 00:00:00.000 2018-02-20
#> 
#> [[4]]
#> # A tibble: 2 × 4
#>   id              p          z                       day       
#>   <chr>           <chr>      <chr>                   <date>    
#> 1 w72qyv1ybi1sf9n change.org 2018-02-22 08:30:00.000 2018-02-22
#> 2 w72qyv1ybi1sf9n change.org 2018-02-22 08:30:00.000 2018-02-22
#> 
#> [[5]]
#> # A tibble: 1 × 4
#>   id              p       z                       day       
#>   <chr>           <chr>   <chr>                   <date>    
#> 1 qwfw4nta0j5yf6x il24.it 2018-03-03 21:50:00.000 2018-03-03

reprex package (v2.0.1)

于 2022-05-25 创建