【问题标题】:Fill columns with NA for shorter strings when splitting to columns拆分为列时用 NA 填充列以获得较短的字符串
【发布时间】:2016-02-13 22:17:35
【问题描述】:

假设我有一个数据框,其列如下所示:

E <- data.frame(
  c("a brown fox"),
  c("something"),
  c("else")
)
E <- as.data.frame(t(E))

                          V1
c..a.brown.fox.. a brown fox
c..something..     something
c..else..               else

我想把它分成这样的列:

V1         V2     V3
a         brown  fox
something NA     NA
else      NA     NA

但它看起来像这样:

pacman::p_load(qdap) # or use library() or whatever
colsplit2df(E, sep = " ")
                        X1        X2        X3
c..a.brown.fox..         a     brown       fox
c..something..   something something something
c..else..             else      else      else

【问题讨论】:

  • data.table::setDT(E)[, tstrsplit(V1, "\\s+")]splitstackshape::cSplit(E, "V1", " ")
  • colsplit2df 是什么?
  • @DavidArenburg 我不认为这是重复的,因为引用的问题是询问 equal length 字符串。他们将每行的 1 个术语分成 2 列。这个问题都是关于不同的字符串长度。
  • 默认情况下,90% 的解决方案都可以正常工作,这并不重要。您可以在那里看到完全相同的cSplittstrsplit 解决方案。这是大约 100 个(至少)类似问题的欺骗。我真的很惊讶你没有在 Google 上找到这个。

标签: r string split qdap


【解决方案1】:

你可以的

library(splitstackshape) 
cSplit(E, 1, " ")
#         V1_1  V1_2 V1_3
# 1:         a brown  fox
# 2: something    NA   NA
# 3:      else    NA   NA

【讨论】:

  • 感谢您的解决方案。我相信这会正常工作,只是为未来的读者提供一个注释,@DavidArenburg 在 cmets 中提供了 data.table 解决方案
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 2014-12-24
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多