首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cSplit函数-拆分时保留空值

cSplit函数-拆分时保留空值
EN

Stack Overflow用户
提问于 2015-08-26 17:14:56
回答 1查看 333关注 0票数 1

我想根据其他列A,将一列B的串联值拆分成单独的行。结果将与B中的串联值一样多,其中A的值将被复制。

但是,B(要拆分的列)中也可以有空值。我只想保留这些记录,而不是丢失A的值。下面是我的数据框。

代码语言:javascript
复制
s<- data.frame(A=c(1:3,4:6),B=c("a,b","b,c","b",rep("",2),"a,b,cd,e"))
s
A     B
1   a,b
2   b,c
3   b
4   
5   
6   a,b,cd,e

您可以在B中看到A中4和5的空值。当我使用cSplit函数时,这些记录将被删除。

代码语言:javascript
复制
sp<-cSplit(s,"B",",",direction = "long")
sp
A  B
1  a
1  b
2  b
2  c
3  b
6  a
6  b
6 cd
6  e

但我需要的结果是这样的。在B中包括那些具有空值的行

代码语言:javascript
复制
sp
A  B
1  a
1  b
2  b
2  c
3  b
4
5
6  a
6  b
6 cd
6  e

cSplit中是否有任何选项来保留空白值或任何其他方式来实现这一点。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-08-26 17:21:27

没有任何设置可以改变这一点,但您可以通过首先拆分成一个list,然后使用listCol_l获取空格所在的NA值来解决这个问题:

代码语言:javascript
复制
library(splitstackshape)
listCol_l(cSplit_l(s, "B", ",", drop = TRUE), "B_list")
##     A B_list_ul
##  1: 1         a
##  2: 1         b
##  3: 2         b
##  4: 2         c
##  5: 3         b
##  6: 4        NA
##  7: 5        NA
##  8: 6         a
##  9: 6         b
## 10: 6        cd
## 11: 6         e

如果输出未打印,则可能需要在行尾添加[],换句话说:

代码语言:javascript
复制
listCol_l(cSplit_l(s, "B", ",", drop = TRUE), "B_list")[]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32222539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档