Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 - Fatal编程技术网

R按地点分开?

R按地点分开?,r,R,我在数据帧中有一列(字符)。该列由以下格式的数据组成: df <- c("Apr 19 DBH", "Apr 19 PPA", "Apr 19 MI", "Apr 19 Total") 我可以substr(df,1,7)放入一列,但仍然需要分离出位置7后的字符 我认为separate是一个很好的解决方案,但是sep=看起来需要某种类型的字符串。我只有空格,在这个例子中,我有两个空格。我可能会将一个字符粘贴到字符串中,并将其分开,但感觉很笨拙。你能只用第一个字符的位置分开吗?或者有更好的

我在数据帧中有一列(字符)。该列由以下格式的数据组成:

df <- c("Apr 19 DBH", "Apr 19 PPA", "Apr 19 MI", "Apr 19 Total") 
我可以
substr(df,1,7)
放入一列,但仍然需要分离出位置7后的字符


我认为
separate
是一个很好的解决方案,但是
sep=
看起来需要某种类型的字符串。我只有空格,在这个例子中,我有两个空格。我可能会将一个字符粘贴到字符串中,并将其分开,但感觉很笨拙。你能只用第一个字符的位置分开吗?或者有更好的方法吗?

我们可以使用
extract

tidyr::extract(df, col, into = c('Date', 'Prod'), regex = "(.*)\\s+(\\w+)")

#    Date  Prod
#1 Apr 19   DBH
#2 Apr 19   PPA
#3 Apr 19    MI
#4 Apr 19 Total
这将数据分为两部分,第一部分捕获所有内容,直到列中的最后一个空格,第二部分捕获列中的最后一个单词

数据

df <- data.frame(col = df)

df您可以使用
stringr
包中的
stru split
功能

请注意,正则表达式
“{2,}”
指示函数在2个或更多空间上拆分

library(stringr)
str_split(df, pattern = " {2,}", simplify = TRUE)
     [,1]     [,2]    
[1,] "Date"   "Prod"  
[2,] "Apr 19" "DBH"   
[3,] "Apr 19" "PPA"   
[4,] "Apr 19" "MI"    
[5,] "Apr 19" "Total"
资料

df1)读取。表格在最后一个空格后插入分号,并使用分号作为字段分隔符读取。没有使用任何软件包

s <- sub("(.* )", "\\1;", df)
read.table(text = s, sep = ";", as.is = TRUE, strip.white = TRUE)

这起作用了。必须熟悉正则表达式之后的字符串。。。我的自学参考资料没有列出这样的东西。。。
df <- c("Date       Prod", "Apr 19     DBH", "Apr 19     PPA", "Apr 19     MI", 
"Apr 19     Total ")
s <- sub("(.* )", "\\1;", df)
read.table(text = s, sep = ";", as.is = TRUE, strip.white = TRUE)
s <- sub("  ", ";", df)
n <- max(nchar(df))
read.fwf(textConnection(df), c(7, n-7), strip.white = TRUE, as.is = TRUE)