【问题标题】:Vector to data frame using vector's element position as ID number [duplicate]使用向量的元素位置作为ID号的向量到数据框[重复]
【发布时间】:2019-02-06 12:04:29
【问题描述】:

假设我们有一个字符向量:

foo <- c("A;B;C", "B;C", "F;G;H")

不知如何生成如下数据框:

1 A
1 B
1 C
2 B
2 C
3 F
3 G
3 H

请注意,第一列中的数字表示组件/元素在字符向量foo 中的位置。

我最初的尝试如下。我使用stringr 包中的str_split() 函数来分隔foo 向量中的元素:

> str_split(foo, pattern = ";")
[[1]]
[1] "A" "B" "C"

[[2]]
[1] "B" "C"

[[3]]
[1] "F" "G" "H"

现在,我想,最好的办法是使用 map 包中的某种 map 函数,但不幸的是我不知道如何继续。

【问题讨论】:

    标签: r purrr


    【解决方案1】:

    一个选项是separate_rows 在创建data.frame 后,索引为'foo'的序列

    library(tidyverse)
    data.frame(ind = seq_along(foo), Col = foo) %>%
        separate_rows(Col)
    

    或者使用OP的方法,将'foo'拆分成list,将'foo'和stack序列的名称设置为两列data.frame'

    stack(setNames(str_split(foo, pattern = ";"), seq_along(foo)))
    

    【讨论】:

    • 谢谢,但列号与所需的模式不匹配。
    • @Andrej 抱歉,已修复
    猜你喜欢
    • 2017-02-25
    • 2011-01-21
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2018-02-23
    • 2018-09-30
    • 2022-08-03
    相关资源
    最近更新 更多