【问题标题】:Split one column into two : Column1-1st split and column2-rest in R [duplicate]将一列拆分为两列:R中的Column1-1st拆分和column2-rest [重复]
【发布时间】:2026-02-24 11:50:01
【问题描述】:

我的数据在单列中,我想将拆分输出分成 2 列。我需要两个输出列。

输入列是....

HOUSEHOLDS-Total households - Female householder- under 18 years  
Total households - Female householder- under 18 years

我想要输出...

列 1

HOUSEHOLDS  
Total households

列 2

Total households - Female householder- under 18 years  
Female householder- under 18 years

【问题讨论】:

  • 您可以添加数据示例吗?我们需要知道在哪个元素上拆分数据。
  • 看看这些想法:*.com/questions/33683862/…
  • HOUSEHOLDS- 总户数 - 女户主 - 18 岁以下 ..... 是我的数据.. 我想将 HOUSEHOLDS 拆分为第一列,总户数 - 女户主 - 在我的 18 岁以下第二列。
  • 问题已编辑@PLapointe

标签: r split data-manipulation


【解决方案1】:

以下是使用来自tidyrseparate 的方法。基本上,您是在第一次出现“-”时分开的。由于extra = "merge",其他事件被忽略。

df <- read.table(text="'HOUSEHOLDS-Total households - Female householder- under 18 years'  
                      'Total households - Female householder- under 18 years'",
                       header=FALSE,stringsAsFactors=FALSE)

library(tidyr)
df %>% separate(V1, into = c('Col1', 'Col2'),  sep="-", extra = "merge").
               Col1                                                  Col2
1        HOUSEHOLDS Total households - Female householder- under 18 years
2 Total households                     Female householder- under 18 years

【讨论】:

  • 它有效@p lapointe .. 谢谢..
【解决方案2】:

如果这是您的数据集:

df1<- c("HOUSEHOLDS-Total households - Female householder- under 18 years", "Total households - Female householder- under 18 years")

你可以使用:

regmatches(df1, regexpr("-", df1), invert = TRUE)
[[1]]
[1] "HOUSEHOLDS-Total households "       "Female householder- under 18 years"

[[2]]
[1] "Total households "                   " Female householder- under 18 years"

输出是一个列表。

【讨论】: