基于空间的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