【问题标题】:Split character vector values by fixed delimiter - return data frame with one row for each vector value通过固定分隔符拆分字符向量值 - 返回每个向量值一行的数据帧
【发布时间】:2021-11-20 14:19:48
【问题描述】:

分隔符出现在所有向量值中,并且只出现一次,因此每个向量值都应该是一对,结果应该是一个两列数据框。

我对我的解决方案并不不满,但想知道是否有一些很酷的功能可以让这更容易。对任何包开放,但首选基础 R。

test <- rep("a,b", 5)

# expected result
data.frame(t(do.call(cbind, strsplit(test, ","))))
#>   X1 X2
#> 1  a  b
#> 2  a  b
#> 3  a  b
#> 4  a  b
#> 5  a  b

【问题讨论】:

    标签: r dataframe split


    【解决方案1】:

    您可以使用tidyr::separate()

    test <- data.frame(x = rep("a,b", 5))
    separate(test,x, c("X1","X2"))
    #>   X1 X2
    #> 1  a  b
    #> 2  a  b
    #> 3  a  b
    #> 4  a  b
    #> 5  a  b
    

    【讨论】:

    • 非常聪明!哈,没想到先把向量转成数据框
    【解决方案2】:

    你可以使用extract:

    library(tidyr)
    
    data.frame(test) %>%
      extract(col = test, 
              into = c("X1", "X2"),
              regex = "(.),(.)")
     X1 X2
    1 a  b
    2 a  b
    3 a  b
    4 a  b
    5 a  b
    

    数据:

    test <- rep("a,b", 5)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多