R中的列拆分

时间:2018-12-11 05:32:45

标签: r database

我正在使用由抓取的数据构造的数据框,其中包含一个字符列。我试图将其分为两列,其中一列包含“ |”之前的元素另一个包含该符号后面的元素。

该列如下所示:

 [1] " 45  cubiertos | 1 . "
 [2] " 5000  cubiertos "    
 [3] " 45  cubiertos | 1 . "
 [4] " 60  cubiertos | 2 . "
 [5] " 57  cubiertos | 1 . "
 [6] " 35  cubiertos "     
 [7] " 70  cubiertos | 2 . "        
 [8] " 50  cubiertos | 2 . "        
 [9] " 45  cubiertos | 2 . "        
[10] " 146  cubiertos | 4 . "  

我尝试使用此命令解决此问题(第一列表示公寓的长度为多少米,第二列表示房间的数量。 )

reshape2::colsplit(alquileres_df$atributo,  "|" , names = c("metraje","dormitorios"))

但是,我得到以下输出:

     metraje                   dormitorios
1         NA          45  cubiertos | 1 . 
2         NA              5000  cubiertos 
3         NA          45  cubiertos | 1 . 
4         NA          60  cubiertos | 2 . 
5         NA          57  cubiertos | 1 . 
6         NA                35  cubiertos 
7         NA          70  cubiertos | 2 . 
8         NA          50  cubiertos | 2 . 
9         NA          45  cubiertos | 2 . 
10        NA         146  cubiertos | 4 .

此外,请注意,有时数据库没有“ |”符号,因此第二列元素可能为空。

为什么会这样?我该怎么解决?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试类似的方法

x <- c(" 45  cubiertos | 1 . ",
" 5000  cubiertos "    ,
" 45  cubiertos | 1 . ",
" 60  cubiertos | 2 . ",
" 57  cubiertos | 1 . ",
" 35  cubiertos "     ,
" 70  cubiertos | 2 . "        ,
" 50  cubiertos | 2 . "        ,
" 45  cubiertos | 2 . "        ,
 " 146  cubiertos | 4 . ")

library(stringr)
str_split(x,"\\|", simplify = TRUE)

它将为您提供两列,其中第一列包含|之前的所有内容,第二列包含所有在|之后的内容。对于没有|的条目,第二列将带有一个类似“”的条目。