【问题标题】:Convert column into a sequence [duplicate]将列转换为序列[重复]
【发布时间】:2021-04-20 08:05:15
【问题描述】:

我有一个如下所示的数据框:

name sex
ab f
ab m
ab f
bc f
bc f
bc m

我想将“性别”列的观察结果转换为字符串。结果应如下所示:

name seq
ab fmf
bc ffm

非常感谢任何帮助! 在此先感谢:)

【问题讨论】:

标签: r data-conversion dplyr


【解决方案1】:

这可能对你有用:


library(tidyverse)

df %>%
  group_by(name) %>%
  summarise(sex = paste(sex, collapse = "")) %>%
  ungroup()

# A tibble: 2 x 2
  name  sex  
  <chr> <chr>
1 ab    fmf  
2 bc    ffm 

数据

df <- structure(list(name = c("ab", "ab", "ab", "bc", "bc", "bc"), 
               sex = c("f", "m", "f", "f", "f", "m")), class = "data.frame", row.names = c(NA, -6L))

【讨论】:

    【解决方案2】:

    你可以试试aggregate

    > aggregate(sex ~ ., df, paste0, collapse = "")
      name sex
    1   ab fmf
    2   bc ffm
    

    数据

    > dput(df)
    structure(list(name = c("ab", "ab", "ab", "bc", "bc", "bc"), 
        sex = c("f", "m", "f", "f", "f", "m")), class = "data.frame", row.names = c(NA,
    -6L))
    

    【讨论】:

    • 非常感谢! :)
    【解决方案3】:

    data.table

    setDT(df)[, list(sex = paste0(sex, collapse = "")), by = name]
    
       name sex
    1:   ab fmf
    2:   bc ffm
    

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 1970-01-01
      • 2013-10-01
      • 2015-08-06
      • 2014-08-15
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多