R 从第1:n个值创建数据帧的迭代,然后删除第一个值并在第行中添加下一个值
我有一个关于创建多个数据帧的问题。下面是初始数据帧R 从第1:n个值创建数据帧的迭代,然后删除第一个值并在第行中添加下一个值,r,dataframe,seq,R,Dataframe,Seq,我有一个关于创建多个数据帧的问题。下面是初始数据帧 framework <- structure(list(game_id = c(303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L
framework <- structure(list(game_id = c(303731L, 303731L, 303731L, 303731L,
303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L,
303731L, 303731L, 303731L, 303731L, 303731L, 303731L, 303731L,
303731L, 303731L), home_team = c(TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE), team_name = c("Barcelona", "Barcelona",
"Barcelona", "Barcelona", "Barcelona", "Barcelona", "Barcelona",
"Barcelona", "Barcelona", "Barcelona", "Barcelona", "Barcelona",
"Barcelona", "Barcelona", "Barcelona", "Barcelona", "Barcelona",
"Barcelona", "Barcelona", "Barcelona"), player_name = c("Antoine Griezmann",
"Sergio Busquets i Burgos", "Sergio Busquets i Burgos", "Sergio Busquets i Burgos",
"Arturo Erasmo Vidal Pardo", "Héctor Junior Firpo Adames", "Héctor Junior Firpo Adames",
"Arturo Erasmo Vidal Pardo", "Arturo Erasmo Vidal Pardo", "Jordi Alba Ramos",
"Arthur Henrique Ramos de Oliveira Melo", "Gerard Piqué Bernabéu",
"Arthur Henrique Ramos de Oliveira Melo", "Samuel Yves Umtiti",
"Clément Lenglet", "Clément Lenglet", "Gerard Piqué Bernabéu",
"Gerard Piqué Bernabéu", "Clément Lenglet", "Clément Lenglet"
), type_name = c("pass", "dribble", "dribble", "pass", "dribble",
"dribble", "pass", "dribble", "pass", "dribble", "dribble", "dribble",
"pass", "dribble", "dribble", "pass", "dribble", "pass", "dribble",
"pass"), result_name = c("success", "success", "success", "success",
"success", "success", "success", "success", "success", "success",
"success", "success", "success", "success", "success", "success",
"success", "success", "success", "success"), no_passes = c(1,
1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 6, 7, 7, 8), subs = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), row.names = 77131:77150, class = "data.frame")
我现在想做的是,使用列no_passes
进行迭代,创建多个数据帧。其思想是第一个数据帧由no_passes==1
组成,朝向no_passes==4
每个新数据帧应删除第一个no_passes
,并在行中添加下一个no_passes
(在本例中为第11个)
因此,第二个数据帧应该包括无传递==2
和无传递==5
这应该迭代到最后一次没有通过
,即8
下面是前两个数据帧的预期输出
产出1
产出2
我当前的代码如下所示,并给出以下输出:
# First, create an empty datalist.
datalist_HT <- list()
# Create the 4-pass frame (with all actions between as well) for Home team
for(j in seq_len(nrow(framework))-4){
# 1: Grab first 4 no_passes starting from j
passes_j <- framework[j:(j+4), ]
# now store each dataframe in a list
datalist_HT[[j]] <- passes_j
}
# Output
game_id home_team team_name player_name type_name result_name no_passes subs
77131 303731 TRUE Barcelona Antoine Griezmann pass success 1 0
77132 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 1 0
77133 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 1 0
77134 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 2 0
77135 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 2 0
#首先,创建一个空的数据列表。
数据列表\u HT库滑块
在这些情况下很有用
library(tidyverse)
library(slider)
framework %>% group_by(no_passes) %>%
nest() %>%
slide(~.x %>% unnest(data), .after = 3, .complete = T) %>%
subset(map(., length) > 0)
[[1]]
# A tibble: 12 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 1 303731 TRUE Barcelona Antoine Griezmann pass success 0
2 1 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 0
3 1 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 0
4 2 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 0
5 2 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
6 2 303731 TRUE Barcelona Héctor Junior Firpo Adames dribble success 0
7 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
8 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
9 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
10 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
11 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
12 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
[[2]]
# A tibble: 12 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 2 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 0
2 2 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
3 2 303731 TRUE Barcelona Héctor Junior Firpo Adames dribble success 0
4 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
5 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
6 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
7 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
8 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
9 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
10 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
11 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
12 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
[[3]]
# A tibble: 11 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
2 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
3 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
4 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
5 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
6 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
7 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
8 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
9 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
10 6 303731 TRUE Barcelona Clément Lenglet pass success 0
11 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
[[4]]
# A tibble: 11 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
2 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
3 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
4 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
5 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
6 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
7 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
8 6 303731 TRUE Barcelona Clément Lenglet pass success 0
9 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
10 7 303731 TRUE Barcelona Gerard Piqué Bernabéu pass success 0
11 7 303731 TRUE Barcelona Clément Lenglet dribble success 0
[[5]]
# A tibble: 8 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
2 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
3 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
4 6 303731 TRUE Barcelona Clément Lenglet pass success 0
5 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
6 7 303731 TRUE Barcelona Gerard Piqué Bernabéu pass success 0
7 7 303731 TRUE Barcelona Clément Lenglet dribble success 0
8 8 303731 TRUE Barcelona Clément Lenglet pass success 0
库(tidyverse)
库(滑块)
框架%>%分组依据(无通过)%>%
嵌套()%>%
幻灯片(~.x%>%unest(数据),.after=3,.complete=T)%>%
子集(映射(,长度)>0)
[[1]]
#一个tibble:12x8
#组别:无通过[4]
没有传球比赛id主场队员姓名球员姓名类型姓名结果姓名替补队员
1303731巴塞罗那安托万·格里兹曼传球成功0
21303731真正的巴塞罗那塞尔吉奥·布斯克茨一号布尔戈斯运球成功0
3 1 303731真正的巴塞罗那塞尔吉奥·布斯克茨一号布尔戈斯运球成功0
4 2 303731真正的巴塞罗那塞尔吉奥·布斯克茨一世布尔戈斯传球成功0
5 2 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕尔多运球成功0
6 2 303731真正的巴塞罗那赫克托少年费波·亚当斯运球成功0
7 3 303731真正的巴塞罗那赫克托青年菲普·亚当斯成功通过0
8 3 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕尔多运球成功0
9 4 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕多传球成功0
10 4 303731真正的巴塞罗那乔迪·阿尔巴·拉莫斯运球成功0
11 4 303731真正的巴塞罗那阿瑟·亨里克·拉莫斯·德奥利维拉·梅洛运球成功0
12 4 303731真正的巴塞罗那杰拉德·皮克·伯纳乌运球成功0
[[2]]
#一个tibble:12x8
#组别:无通过[4]
没有传球比赛id主场队员姓名球员姓名类型姓名结果姓名替补队员
1230731真正的巴塞罗那塞尔吉奥·布斯克茨一世布尔戈斯传球成功0
2 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕尔多运球成功0
3 2 303731真正的巴塞罗那赫克托少年费波·亚当斯运球成功0
4 3 303731真正的巴塞罗那赫克托青年菲波·亚当斯成功通过0
5 3 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕尔多运球成功0
6 4 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕多传球成功0
7 4 303731真正的巴塞罗那乔迪·阿尔巴·拉莫斯运球成功0
8 4 303731真正的巴塞罗那阿瑟·亨里克·拉莫斯·德奥利维拉·梅洛运球成功0
9 4 303731真正的巴塞罗那杰拉德·皮克·伯纳乌运球成功0
10 5 303731真正的巴塞罗那阿瑟·亨里克·拉莫斯·德奥利维拉·梅洛传球成功0
11 5 303731真正的巴塞罗那塞缪尔·伊夫·乌姆提蒂运球成功0
12 5 303731真正的巴塞罗那克莱门特·朗格利特运球成功0
[[3]]
#一个tibble:11x8
#组别:无通过[4]
没有传球比赛id主场队员姓名球员姓名类型姓名结果姓名替补队员
1 3 303731真正的巴塞罗那赫克托青年菲波·亚当斯成功通过0
2 3 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕尔多运球成功0
3 4 303731真正的巴塞罗那阿图罗·埃拉斯莫·维达尔·帕多传球成功0
4 4 303731真正的巴塞罗那乔迪·阿尔巴·拉莫斯运球成功0
5 4 303731真正的巴塞罗那阿瑟·亨里克·拉莫斯·德奥利维拉·梅洛运球成功0
6 4 303731真正的巴塞罗那杰拉德·皮克·伯纳乌运球成功0
7 5 303731真正的巴塞罗那阿瑟·亨里克·拉莫斯·德奥利维拉·梅洛传球成功0
85303731真正的巴塞罗那塞缪尔·伊夫·乌姆提蒂运球成功0
95303731真正的巴塞罗那克莱门特·朗格利特运球成功0
10 6 303731真正的巴塞罗纳克莱门特冷传球成功0
11 6 303731真正的巴塞罗那杰拉德·皮克·伯纳乌运球成功0
[[4]]
#一个tibble:11x8
#组别:无通过[4]
没有传球比赛id主场队员姓名球员姓名类型姓名结果姓名替补队员
14303731对
game_id home_team team_name player_name type_name result_name no_passes subs
77134 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 2 0
77135 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 2 0
77136 303731 TRUE Barcelona Héctor Junior Firpo Adames dribble success 2 0
77137 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 3 0 1
77138 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 3 0
77139 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 4 0
77140 303731 TRUE Barcelona Jordi Alba Ramos dribble success 4 0
77141 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 4 0
77142 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 4 0
77143 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo SUB success 5 1 1
77144 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 5 0
77145 303731 TRUE Barcelona Clément Lenglet dribble success 5 0
# First, create an empty datalist.
datalist_HT <- list()
# Create the 4-pass frame (with all actions between as well) for Home team
for(j in seq_len(nrow(framework))-4){
# 1: Grab first 4 no_passes starting from j
passes_j <- framework[j:(j+4), ]
# now store each dataframe in a list
datalist_HT[[j]] <- passes_j
}
# Output
game_id home_team team_name player_name type_name result_name no_passes subs
77131 303731 TRUE Barcelona Antoine Griezmann pass success 1 0
77132 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 1 0
77133 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 1 0
77134 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 2 0
77135 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 2 0
library(tidyverse)
library(slider)
framework %>% group_by(no_passes) %>%
nest() %>%
slide(~.x %>% unnest(data), .after = 3, .complete = T) %>%
subset(map(., length) > 0)
[[1]]
# A tibble: 12 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 1 303731 TRUE Barcelona Antoine Griezmann pass success 0
2 1 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 0
3 1 303731 TRUE Barcelona Sergio Busquets i Burgos dribble success 0
4 2 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 0
5 2 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
6 2 303731 TRUE Barcelona Héctor Junior Firpo Adames dribble success 0
7 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
8 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
9 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
10 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
11 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
12 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
[[2]]
# A tibble: 12 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 2 303731 TRUE Barcelona Sergio Busquets i Burgos pass success 0
2 2 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
3 2 303731 TRUE Barcelona Héctor Junior Firpo Adames dribble success 0
4 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
5 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
6 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
7 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
8 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
9 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
10 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
11 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
12 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
[[3]]
# A tibble: 11 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 3 303731 TRUE Barcelona Héctor Junior Firpo Adames pass success 0
2 3 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo dribble success 0
3 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
4 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
5 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
6 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
7 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
8 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
9 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
10 6 303731 TRUE Barcelona Clément Lenglet pass success 0
11 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
[[4]]
# A tibble: 11 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 4 303731 TRUE Barcelona Arturo Erasmo Vidal Pardo pass success 0
2 4 303731 TRUE Barcelona Jordi Alba Ramos dribble success 0
3 4 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo dribble success 0
4 4 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
5 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
6 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
7 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
8 6 303731 TRUE Barcelona Clément Lenglet pass success 0
9 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
10 7 303731 TRUE Barcelona Gerard Piqué Bernabéu pass success 0
11 7 303731 TRUE Barcelona Clément Lenglet dribble success 0
[[5]]
# A tibble: 8 x 8
# Groups: no_passes [4]
no_passes game_id home_team team_name player_name type_name result_name subs
<dbl> <int> <lgl> <chr> <chr> <chr> <chr> <dbl>
1 5 303731 TRUE Barcelona Arthur Henrique Ramos de Oliveira Melo pass success 0
2 5 303731 TRUE Barcelona Samuel Yves Umtiti dribble success 0
3 5 303731 TRUE Barcelona Clément Lenglet dribble success 0
4 6 303731 TRUE Barcelona Clément Lenglet pass success 0
5 6 303731 TRUE Barcelona Gerard Piqué Bernabéu dribble success 0
6 7 303731 TRUE Barcelona Gerard Piqué Bernabéu pass success 0
7 7 303731 TRUE Barcelona Clément Lenglet dribble success 0
8 8 303731 TRUE Barcelona Clément Lenglet pass success 0