数据示例:
X <- as.matrix(c("2019.01.01 (TUE) A STADIUM [spectator : 4000]", "2019.01.01 (TUE) C STADIUM [spectator : 3600]", "2018.01.02 (WED) B STADIUM [spectator : 2800]", "2019.01.02 (WED) D STADIUM [spectator : 3500]"))
X
[,1]
[1,] 2019.01.01 (TUE) A STADIUM [spectator : 4000]
[2,] 2019.01.01 (TUE) C STADIUM [spectator : 3600]
[3,] 2018.01.02 (WED) B STADIUM [spectator : 2800]
[4,] 2019.01.02 (WED) D STADIUM [spectator : 3500]我想分开这个数据帧3或4列。如下所示:
Day Day2 STADIUM Spectator
1 2019.01.01 TUE A STADIUM 4000
2 2019.01.01 TUE C STADIUM 3600
3 2018.01.02 WED B STADIUM 2800
4 2019.01.02 WED D STADIUM 3500我尝试过的:str_split返回列表。所以我用了str_split_fixed。这是必需的n值。我分配了n= 4,但它将标点符号向前分开。
str_split_fixed(X, n = 4, '[[:punct:]]')
[,1] [,2] [,3] [,4]
[1,] "2019" "01" "01 " "TUE) A STADIUM [spectator : 4000]"
[2,] "2019" "01" "01 " "TUE) C STADIUM [spectator : 3600]"
[3,] "2018" "01" "02 " "WED) B STADIUM [spectator : 2800]"
[4,] "2019" "01" "02 " "WED) D STADIUM [spectator : 3500]"发布于 2019-09-23 08:19:06
我们可以通过定义捕获组来提取tidyr::extract
tidyr::extract(data.frame(X), X, into = c("Day", "Day2", "Stadium", "Spectator"),
regex = "(.*)\\((.*)\\).*([A-Z]+ STADIUM).*spectator : (\\d+)")
# Day Day2 Stadium Spectator
#1 2019.01.01 TUE A STADIUM 4000
#2 2019.01.01 TUE C STADIUM 3600
#3 2018.01.02 WED B STADIUM 2800
#4 2019.01.02 WED D STADIUM 3500我们在这里定义了4个捕获组。
( 1)从文本的开头开始,直到遇到开头的圆括号。
( 2)开头和结尾方括号之间的案文。
( 3)来自[A-Z]的一个或多个字符,后面跟着单词"STADIUM"
( 4)逐字"spectator"。
发布于 2019-09-23 08:22:44
你可以:
X <- c("2019.01.01 (TUE) A STADIUM [spectator : 4000]", "2019.01.01 (TUE) C STADIUM [spectator : 3600]", "2018.01.02 (WED) B STADIUM [spectator : 2800]", "2019.01.02 (WED) D STADIUM [spectator : 3500]")
Dat <- read.table(text=X)[c(1:3, 7)]
names(Dat) <- c("Day", "Day2", "STADIUM", "Spectator")
Dat$Spectator <- sub("]", "", Dat$Spectator, fixed = TRUE)
Dat$Day2 <- substr(Dat$Day2, 2, 4)
Dat
# > Dat
# Day Day2 STADIUM Spectator
# 1 2019.01.01 TUE A 4000
# 2 2019.01.01 TUE C 3600
# 3 2018.01.02 WED B 2800
# 4 2019.01.02 WED D 3500https://stackoverflow.com/questions/58058093
复制相似问题