【问题标题】:Turn column into string in R在R中将列转换为字符串
【发布时间】:2017-05-10 20:58:55
【问题描述】:

这是我的数据框:

mydf <- data.frame('col_1' = c('a', 'b', 'c', 'd'), 'col_2' = c(1,1,2,2))

我想将其转换为以下数据框:

mydf_1 <- data.frame('col_1' = c('a', 'b', 'c', 'd'), 'col_2' = c(1,1,2,2), 'col_1' = c('a-b', 'a-b', 'c-d', 'c-d'))

所以基本上按col_2 分组并将列转换为字符串

这是我尝试过的:

library(dplyr)
mydf_1 <- mydf %>% group_by(col_1) %>%
 mutate(col_3 = paste(col_1, sep = "-"))

但它没有工作。有什么建议吗?

【问题讨论】:

    标签: r concatenation grouping


    【解决方案1】:

    给你:

    df$col_3 = ave(as.character(df$col_1),
                   df$col_2,
                   FUN = function(x){
                            paste0(x,collapse = "-")
                   })
    

    这会返回:

    > df
      col_1 col_2 col3
    1     a     1  a-b
    2     b     1  a-b
    3     c     2  c-d
    4     d     2  c-d
    

    【讨论】:

    • 如此简单!
    【解决方案2】:

    使用 dplyr - 这清楚地假设总是有对

    result <- mydf %>% 
      group_by(col_2) %>%
      mutate(col_1.1 = if_else(is.na(lag(col_1)), 
                                     paste(col_1, lead(col_1), sep= "-"),
                                     paste(lag(col_1), col_1, sep="-")))
    
    #    col_1 col_2 col_1.1
    #   <fctr> <dbl>   <chr>
    # 1      a     1     a-b
    # 2      b     1     a-b
    # 3      c     2     c-d
    # 4      d     2     c-d
    

    【讨论】:

      猜你喜欢
      • 2020-11-13
      • 2014-04-29
      • 2021-03-14
      • 1970-01-01
      • 2022-10-24
      • 2022-12-06
      • 2023-03-15
      • 2018-04-06
      相关资源
      最近更新 更多