【问题标题】:Split string at separator and create new dataframe在分隔符处拆分字符串并创建新的数据框
【发布时间】:2019-12-25 10:50:33
【问题描述】:

这似乎是一个基本问题,因此请随时向我指出另一个答案,但我无法通过搜索找到答案。

我有一组 180,000 行,如下所示:

df <- c("12hfgog|hcsg9ws|xaw_07cas", "fhjf79", "8xxghk")

我想在分隔符“|”处分割字符串并创建一个新的数据框,其结果如下所示:

df2 <- c("12hfgog","hcsg9ws", "xaw_07cas", "fhjf79", "8xxghk")

我知道它涉及 strsplit、unlist 和 unnest 的某种组合,但我不能完全正确。任何帮助表示赞赏!

【问题讨论】:

  • 你可以使用library(tidyr); df %>% separate_rows(colname)
  • df2 <-unlist(strsplit(df, "\\|") )
  • 谢谢你们!优秀的解决方案!
  • 澄清一下——您是在寻找字符向量(示例中为 df 和 df2)还是 data.frame(即行和列)?

标签: r


【解决方案1】:

我的建议是使用 sapply 和 strsplit。稍后只是将结果列表转换为带有 unlist 的向量。

df1 <- c("12hfgog|hcsg9ws|xaw_07cas", "fhjf79", "8xxghk")
df2 <- unlist(sapply(df1, strsplit, split = "\\|", USE.NAMES = FALSE))

问候。

【讨论】:

  • strsplit 是矢量化的,因此您可以跳过sapply 并按照@GordonShumway 的评论(即unlist(strsplit(df, "\\|")))。
【解决方案2】:

我们可以使用separate_rows

library(tidyr)
df %>% 
   separate_rows(colname)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多