Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于空间的R列拆分_R_Split_Tidyr - Fatal编程技术网

基于空间的R列拆分

基于空间的R列拆分,r,split,tidyr,R,Split,Tidyr,我有一个位置列,如下所示- Location San Jose CA Santa Clara CA City State San Jose Santa Clara 我想分成两列。我使用的是tidyr中的独立函数,但将sep参数设置为“”会给出以下结果- Location San Jose CA Santa Clara CA City State San Jose Santa Clara 如何仅基于第二个空格拆分列

我有一个位置列,如下所示-

   Location 
   San Jose CA
   Santa Clara CA
  City  State
  San   Jose
  Santa Clara
我想分成两列。我使用的是tidyr中的独立函数,但将sep参数设置为“”会给出以下结果-

   Location 
   San Jose CA
   Santa Clara CA
  City  State
  San   Jose
  Santa Clara
如何仅基于第二个空格拆分列

structure(list(Location = c("San Jose CA", "Santa Clara CA")),
          .Names = "Location", class = "data.frame", row.names = c(NA, -2L))
library(tidyr)

df使用
base R
的选项包括将最后一个空格替换为
(使用
sub
),然后使用
read.csv
读取列

read.csv(text=sub("\\s+(\\S+)$", ",\\1", df1$Location), 
        col.names=c('City', 'State'), header=FALSE)
#         City State
#1    San Jose    CA
#2 Santa Clara    CA

@Mridul Garg你确定整个栏目的模式是一致的,即所有位置都有两个空格吗?不,它包含的列也只有一个空格-例如Fremont CA。这些情况给我带来了麻烦。非常感谢@JasonAizkalns,它工作得非常好。你可以在
tidyr
lookarounds中使用动态量词吗?我真的不知道什么时候可以。很好的解决方案!也许其他人可以详细说明,但我相信在幕后,
sep
参数调用
stringi::stri\u split\u regex