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

按ID对数据帧进行分组,然后为每个组将其拆分为多个数据帧[duplicate]

  •  2
  • Ed_Gravy  · 技术社区  · 4 年前

    假设我有一个 timeseries dataset 不同的 IDs .每个ID都有不同的值。我想首先按ID对数据进行分组。然后,我会将这个数据帧拆分为每个组的多个数据帧。

    在R中如何使用 dplyr ?

    # Sample Data
    
    ID = c("A", "B", "C", "A", "B", "C", "A", "B", "C")
    Date = c("01/01/2022", "01/02/2022", "01/03/2022", "01/01/2022", "01/02/2022", "01/03/2022", "01/01/2022", "01/02/2022", "01/03/2022")
    Value = c("45", "24", "33", "65", "24", "87", "51", "32", "72")
    

    我想要的是:

    df1
    
           ID       Date   Value
        1  A 01/01/2022    45
        2  A 01/02/2022    65
        3  A 01/03/2022    51
    df2
    
           ID       Date   Value
        1  B 01/01/2022    24
        2  B 01/02/2022    24
        3  B 01/03/2022    32
    df3
    
           ID       Date   Value
        1  C 01/01/2022    33
        2  C 01/02/2022    87
        3  C 01/03/2022    72
    
    
    
    library(dplyr)
    
    df = (ID, Date, Value)
    
        # What I tried so far
        
        df_group =  df  %>% 
          group_by(ID, Value) %>% 
          group_split() 
    
    2 回复  |  直到 4 年前
        1
  •  3
  •   Brian Syzdek    4 年前

    根据回答,您希望将df设置为

    df <- data.frame(ID, Date, Value)
    

    然后你就可以进行分组了

    dataframe <- df %>%
    group_split(ID)
    
        2
  •  0
  •   Shawn Hemelstrand    4 年前

    创建数据框:

    ID = c("A", "B", "C", "A", "B", "C", "A", "B", "C")
        Date = c("01/01/2022", "01/02/2022", "01/03/2022", "01/01/2022", "01/02/2022", "01/03/2022", "01/01/2022", "01/02/2022", "01/03/2022")
        Value = c("45", "24", "33", "65", "24", "87", "51", "32", "72")
    
    df <- data.frame(ID,Date,Value)
    

    拆分数据:

    df_a <- df %>% 
      filter(ID =="A")
    df_b <-  df %>% 
      filter(ID =="B")
    df_c <-  df %>% 
      filter(ID =="C")
    

    打印数据:

    现在只需运行下面的拆分数据帧:

    df_a
    df_b
    df_c
    

    这将为您提供以下输出:

      ID       Date Value
    1  A 01/01/2022    45
    2  A 01/01/2022    65
    3  A 01/01/2022    51
    
      ID       Date Value
    1  B 01/02/2022    24
    2  B 01/02/2022    24
    3  B 01/02/2022    32
    
      ID       Date Value
    1  C 01/03/2022    33
    2  C 01/03/2022    87
    3  C 01/03/2022    72