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)