我正在使用由抓取的数据构造的数据框,其中包含一个字符列。我试图将其分为两列,其中一列包含“ |”之前的元素另一个包含该符号后面的元素。
该列如下所示:
[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 .
此外,请注意,有时数据库没有“ |”符号,因此第二列元素可能为空。
为什么会这样?我该怎么解决?
谢谢!
答案 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)
它将为您提供两列,其中第一列包含|之前的所有内容,第二列包含所有在|之后的内容。对于没有|的条目,第二列将带有一个类似“”的条目。