Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Keisuke ANDO
socceR
Commits
59f1eb7a
Commit
59f1eb7a
authored
Apr 15, 2022
by
Keisuke ANDO
😌
Browse files
[add] rcgファイル(新形式)のパーサを追加
parent
85828ab7
Changes
5
Show whitespace changes
Inline
Side-by-side
R/make_graphics.R
deleted
100644 → 0
View file @
85828ab7
make_graph
<-
function
(
p_data
,
teamname
,
num
){
p
<-
ggplot
(
data
=
p_data
%>%
filter
(
team
==
teamname
,
unum
==
num
),
aes
(
x
=
as.numeric
(
x
),
y
=
as.numeric
(
y
)))
+
ggplot2
::
coord_fixed
(
xlim
=
c
(
-55
,
55
),
ylim
=
c
(
-35
,
35
))
+
geom_hline
(
yintercept
=
-34.1
,
linetype
=
"solid"
)
+
geom_hline
(
yintercept
=
34.1
,
linetype
=
"solid"
)
+
geom_hline
(
yintercept
=
0
,
linetype
=
"solid"
)
+
geom_vline
(
xintercept
=
52.6
,
linetype
=
"solid"
)
+
geom_vline
(
xintercept
=
-52.6
,
linetype
=
"solid"
)
+
geom_vline
(
xintercept
=
0
,
linetype
=
"solid"
)
+
geom_point
(
size
=
0.1
)
+
geom_density_2d_filled
(
alpha
=
0.7
)
return
(
p
)
}
#ggplot2::geom_path(size=1.2,aes(color = as.numeric(step))) +
# +
# ggplot2::geom_density2d(size = 0.25, colour = "black")
\ No newline at end of file
R/read_rcg.R
View file @
59f1eb7a
# remove(list = ls());gc()
#' Read RCG file
# path = "~/socceR/R/test.rcg"
#'
tag
<-
c
(
"x"
,
"y"
,
"vx"
,
"vy"
)
#' @param path RCG file path
#' @return Parsed tibble of RCG file in \code{path}
read_rcg_ball
<-
function
(
path
){
#' @examples
ball_log
<-
path
|>
#' read_rcg("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcg")
readr
::
read_lines
()
|>
read_rcg
<-
function
(
path
)
{
tibble
::
as_tibble
()
|>
rcg
<-
path
|>
dplyr
::
mutate
(
readr
::
read_file
()
|>
step
=
value
|>
stringr
::
str_extract
(
"\\(show ([0-9]*)*"
)
jsonlite
::
parse_json
(
simplifyVector
=
TRUE
,
flatten
=
TRUE
)
|>
|>
stringr
::
str_remove
(
"\\(show "
),
ball
=
value
|>
stringr
::
str_extract
(
"\\(\\(b\\)( [0-9\\-\\.]*)*\\)"
)
|>
stringr
::
str_remove
(
"\\(\\(b\\) "
)
|>
stringr
::
str_remove
(
"\\)"
),
x
=
ball
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
y
=
ball
|>
stringr
::
str_remove
(
x
)
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
vx
=
ball
|>
stringr
::
str_remove
(
x
)
|>
stringr
::
str_remove
(
y
)
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
vy
=
ball
|>
stringr
::
str_remove
(
x
)
|>
stringr
::
str_remove
(
y
)
|>
stringr
::
str_remove
(
vx
)
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
)
|>
dplyr
::
select
(
step
,
# ball,
x
,
y
,
vx
,
vy
,
)
%>%
tidyr
::
drop_na
()
return
(
ball_log
)
}
read_rcg_player
<-
function
(
path
){
player_log
<-
path
|>
readr
::
read_lines
()
|>
tibble
::
as_tibble
()
|>
tibble
::
as_tibble
()
|>
dplyr
::
mutate
(
dplyr
::
filter
(
type
==
"show"
)
|>
step
=
value
|>
stringr
::
str_extract
(
"\\(show ([0-9]*)*"
)
dplyr
::
select
(
time
,
players
,
ball.x
,
ball.y
,
ball.vx
,
ball.vy
)
|>
|>
stringr
::
str_remove
(
"\\(show "
),
players
=
value
|>
stringr
::
str_extract_all
(
"\\(\\([lr] [0-9]*\\) [0-9]* [0-9x]* ([0-9\\-\\.]* )*\\(v h [0-9\\-\\.]*\\) \\(s( [0-9\\-\\.]*)*\\)( \\(f [rl] [0-9\\-\\.]*\\))* \\(c( [0-9\\-\\.]*)*\\)\\)"
)
)
|>
tidyr
::
unnest
(
players
)
|>
tidyr
::
unnest
(
players
)
|>
dplyr
::
mutate
(
dplyr
::
select
(
time
:
capacity
,
ball.x
:
ball.vy
)
|>
player
=
players
|>
stringr
::
str_extract
(
"\\([rl] [0-9]+\\)"
),
dplyr
::
rename
(
step
=
time
)
|>
team
=
player
|>
stringr
::
str_extract
(
"[rl]"
),
dplyr
::
rename_with
(
stringr
::
str_replace
,
pattern
=
"\\."
,
replacement
=
"_"
)
unum
=
player
|>
stringr
::
str_extract
(
"[0-9]+"
),
params
=
players
|>
stringr
::
str_remove
(
"\\([rl] [0-9]+\\)"
),
type
=
params
|>
stringr
::
str_extract
(
"[0-9\\-\\.x]+"
),
l1
=
params
|>
stringr
::
str_remove
(
type
),
state
=
l1
|>
stringr
::
str_extract
(
"[0-9\\-\\.x]+"
),
l2
=
l1
|>
stringr
::
str_remove
(
state
),
x
=
l2
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
l3
=
l2
|>
stringr
::
str_remove
(
x
),
y
=
l3
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
l4
=
l3
|>
stringr
::
str_remove
(
y
),
vx
=
l4
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
l5
=
l4
|>
stringr
::
str_remove
(
vx
),
vy
=
l5
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
l6
=
l5
|>
stringr
::
str_remove
(
vy
),
body
=
l6
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
l7
=
l6
|>
stringr
::
str_remove
(
body
),
neck
=
l7
|>
stringr
::
str_extract
(
"[0-9\\-\\.]+"
),
return
(
rcg
)
l8
=
l7
|>
stringr
::
str_remove
(
neck
),
)
|>
dplyr
::
select
(
step
,
# players,
# player,
team
,
unum
,
# params,
# type,
# state,
x
,
y
,
vx
,
vy
,
body
,
neck
,
)
%>%
tidyr
::
drop_na
()
return
(
player_log
)
}
}
R/read_rcl.R
View file @
59f1eb7a
#' Read RCL file
#'
#' @param path RCL file path
#' @return Parsed tibble of RCL file in \code{path}
#' @examples
#' read_rcg("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
read_rcl
<-
function
(
path
)
{
read_rcl
<-
function
(
path
)
{
rcl
<-
path
|>
rcl
<-
path
|>
readr
::
read_lines
()
|>
readr
::
read_lines
()
|>
...
...
README.Rmd
View file @
59f1eb7a
...
@@ -14,3 +14,13 @@ library(tidyverse)
...
@@ -14,3 +14,13 @@ library(tidyverse)
source("R/read_rcl.R")
source("R/read_rcl.R")
read_rcl("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
read_rcl("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
```
```
### `read_rcg`
指定されたrcgファイルを解析し、tibbleにして返します。
```{r, message=FALSE, collapse = TRUE}
library(tidyverse)
source("R/read_rcg.R")
read_rcg("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcg")
```
README.md
View file @
59f1eb7a
...
@@ -26,3 +26,29 @@ read_rcl("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
...
@@ -26,3 +26,29 @@ read_rcl("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
## 10 0 HELIOS_base 1 turn <chr [1]> "0,115\tRecv HELIOS_base_1: (t~
## 10 0 HELIOS_base 1 turn <chr [1]> "0,115\tRecv HELIOS_base_1: (t~
## # ... with 867,088 more rows
## # ... with 867,088 more rows
```
```
### `read_rcg`
指定されたrcgファイルを解析し、tibbleにして返します。
```
r
library
(
tidyverse
)
source
(
"R/read_rcg.R"
)
read_rcg
(
"data/20220405162804-HELIOS_base_3-vs-enemy_2.rcg"
)
## # A tibble: 143,418 x 21
## step side unum type state x y vx vy body neck vq
## <int> <chr> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <chr>
## 1 1 l 1 0 9 -49 0 0 0 54.7 0 h
## 2 1 l 2 17 1 -25 -5 0 0 -118. 0 h
## 3 1 l 3 8 1 -25 5 0 0 108. 0 h
## 4 1 l 4 13 1 -25 -10 0 0 -117. 0 h
## 5 1 l 5 6 1 -25 10 0 0 -174. 0 h
## 6 1 l 6 11 1 -25 0 0 0 114. 0 h
## 7 1 l 7 10 1 -15 -5 0 0 162. 0 h
## 8 1 l 8 5 1 -15 5 0 0 -170. 0 h
## 9 1 l 9 4 1 -15 -10 0 0 175. 0 h
## 10 1 l 10 16 1 -15 10 0 0 -122. 0 h
## # ... with 143,408 more rows, and 9 more variables: vw <int>, stamina <dbl>,
## # effort <dbl>, recovery <dbl>, capacity <dbl>, ball_x <dbl>, ball_y <dbl>,
## # ball_vx <dbl>, ball_vy <dbl>
```
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment