代码之家  ›  专栏  ›  技术社区  ›  stats_noob

R: 正确应用R中的轴心函数

  •  0
  • stats_noob  · 技术社区  · 2 年前

    我有这个数据集:

    my_data = structure(list(col = c("A", "B", "C"), `2000-01-01` = c(86L, 
    43L, 73L), `2000-01-02` = c(99L, 77L, 12L)), class = "data.frame", row.names = c(NA, 
    -3L))
    
      col 2000-01-01 2000-01-02
    1   A         86         99
    2   B         43         77
    3   C         73         12
    

    我的目标是将此数据集转换为以下格式:

            date col count
    1 2000-01-01   A    86
    2 2000-01-01   B    43
    3 2000-01-01   C    73
    4 2000-01-02   A    99
    5 2000-01-02   B    77
    6 2000-01-02   C    12
    

    我做得对吗?

    这是我的代码:

    library(tidyr)
    # how come this seems to works for all columns even though I only specified "2001-01-01"?
    my_data %>%
      pivot_longer(!col, names_to = "2001-01-01", values_to = "count")
    
    # A tibble: 6 x 3
      col   `2001-01-01` count
      <chr> <chr>        <int>
    1 A     2000-01-01      86
    2 A     2000-01-02      99
    3 B     2000-01-01      43
    4 B     2000-01-02      77
    5 C     2000-01-01      73
    6 C     2000-01-02      12
    

    谢谢

    1 回复  |  直到 2 年前
        1
  •  2
  •   Baraliuh    2 年前

    我会这样做的:

    library(tidyr)
    library(dplyr)
    #> 
    #> Attaching package: 'dplyr'
    #> The following objects are masked from 'package:stats':
    #> 
    #>     filter, lag
    #> The following objects are masked from 'package:base':
    #> 
    #>     intersect, setdiff, setequal, union
    structure(list(col = c("A", "B", "C"), `2000-01-01` = c(86L, 
                                                            43L, 73L), `2000-01-02` = c(99L, 77L, 12L)), class = "data.frame", row.names = c(NA, 
                                                                                                                                             -3L)
        ) %>% 
        pivot_longer(-col, names_to = 'date', values_to = 'count') %>% 
        arrange(date, col)
    #> # A tibble: 6 × 3
    #>   col   date       count
    #>   <chr> <chr>      <int>
    #> 1 A     2000-01-01    86
    #> 2 B     2000-01-01    43
    #> 3 C     2000-01-01    73
    #> 4 A     2000-01-02    99
    #> 5 B     2000-01-02    77
    #> 6 C     2000-01-02    12
    

    创建于2022-12-09 reprex v2.0.2