【发布时间】: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
我有一个如下所示的数据框:
| name | sex |
|---|---|
| ab | f |
| ab | m |
| ab | f |
| bc | f |
| bc | f |
| bc | m |
我想将“性别”列的观察结果转换为字符串。结果应如下所示:
| name | seq |
|---|---|
| ab | fmf |
| bc | ffm |
非常感谢任何帮助! 在此先感谢:)
【问题讨论】:
标签: r data-conversion dplyr
这可能对你有用:
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))
【讨论】:
你可以试试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))
【讨论】:
data.table
setDT(df)[, list(sex = paste0(sex, collapse = "")), by = name]
name sex
1: ab fmf
2: bc ffm
【讨论】: