【问题标题】:Group same value and concat the value in another column in R [duplicate]分组相同的值并将值连接到R中的另一列[重复]
【发布时间】:2020-05-13 11:14:06
【问题描述】:

我正在尝试对数据集进行排序,对此我有点迷茫。

我想得到这个结果并将其保存到 csv 文件中:

知道如何做到这一点吗? 提前致谢!

【问题讨论】:

    标签: r


    【解决方案1】:

    使用tidyverse 你可以group_by 你的ID 然后summarise。使用collapse 表示您想为paste 使用分隔符(在本例中为分号)。

    library(tidyverse)
    
    df %>%
      group_by(ID) %>%
      summarise(MovieCode = paste(MovieCode, collapse = ";"))
    

    或者在基础 R 中,使用 aggregate:

    aggregate(MovieCode ~ ID, df, paste, collapse = ";")
    

    输出

       ID   MovieCode
    1 ABC A10;A12;A13
    2 BDE         A11
    3 CDE         A14
    

    数据

    df <- structure(list(ID = c("ABC", "BDE", "ABC", "ABC", "CDE"), MovieCode = c("A10", 
    "A11", "A12", "A13", "A14")), class = "data.frame", row.names = c(NA, 
    -5L))
    

    【讨论】:

    • 实际的列名电影代码带空格;)
    【解决方案2】:

    你可以用数据表轻松做到:

    library(data.table)
    #create table
    ID <- c("ABC","BDE", "ABC","ABC","CDE")
    Movie_Code <- c("A10","A11","A12","A13","A14")
    df <- data.frame(ID, Movie_Code)
    #convert to data table
    df<-data.table(df)
    setkey(df, ID)
    final_tab<-df[, paste(unique(Movie_Code), collapse=", "),by=ID]
    #CSV: comma separated values
    

    输出:

        ID            V1
    1: ABC A10, A12, A13
    2: BDE           A11
    3: CDE           A14
    

    发件人:Daniel Bachen

    【讨论】:

      【解决方案3】:

      这是base R 解决方案:

      说明性数据:

      df <- data.frame(
        v1 = c("ABA", "BCB", "ABA", "BCB", "DCD"),
        v2 = letters[1:5]
      )
      

      解决办法:

      df1 <- data.frame(
        v1_unique = unique(df$v1),
        v2_paste = tapply(df$v2, df$v1, paste0, collapse = ";"), row.names = NULL)
      

      结果:

      df1
        v1_unique v2_paste
      1       ABA      a;c
      2       BCB      b;d
      3       DCD        e
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 2019-01-11
        • 2021-12-21
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 2018-11-29
        相关资源
        最近更新 更多