使用R,我如何获取球员和积分列表,并创建每场比赛的球队和前五名球员的数据框架

使用R,我如何获取球员和积分列表,并创建每场比赛的球队和前五名球员的数据框架,r,for-loop,subset,R,For Loop,Subset,我有一个所有NBA球员的数据框架,他们的球队和每场比赛的分数。我想创建一个新的数据框,将球队名称列为第一列,接下来的五列是他们五名领先得分手每场比赛的得分 所以。。。(编造数字) ATL 17.2 14.3 12.2 10.2 9.4 我正在努力解决可能使我达到目的的问题。我想我需要为每支球队创建第一个数据帧的子集(列出他们的每个得分者),然后对所有30个数据帧进行排序,然后使用[0:4]将每场比赛分数列中的前5个值移动到新的数据帧中 有没有一种简单的方法可以使用for循环来创建所有30个数据帧

我有一个所有NBA球员的数据框架,他们的球队和每场比赛的分数。我想创建一个新的数据框,将球队名称列为第一列,接下来的五列是他们五名领先得分手每场比赛的得分

所以。。。(编造数字)

ATL 17.2 14.3 12.2 10.2 9.4

我正在努力解决可能使我达到目的的问题。我想我需要为每支球队创建第一个数据帧的子集(列出他们的每个得分者),然后对所有30个数据帧进行排序,然后使用[0:4]将每场比赛分数列中的前5个值移动到新的数据帧中

有没有一种简单的方法可以使用for循环来创建所有30个数据帧?也许如果我为每个团队的名字创建一个列表,然后做一些类似于

for i in list:
    create data frame i from ALLPLAYERS[TEAM = i]
然后我可以使用其他排序对它们进行排序,并将它们添加到最终的数据帧中


对不起,我知道上面的“代码”部分不是真正的代码,它只是我在想的,我需要找到确切的措辞

下面是一个策略的示例代码(前两名得分者):

set.seed(123)

df以下是一种策略的示例代码(前2名得分者):

set.seed(123)

df以下是一种策略的示例代码(前2名得分者):

set.seed(123)

df以下是一种策略的示例代码(前2名得分者):

set.seed(123)

df这使用
data.table
工作

library(data.table)
nba = data.table(player = 1:100, team = rep(LETTERS[1:10], 
                      each = 10), ppg = 1:100)
nba[, as.list(tail(sort(ppg), 5)), by = team]

我在每场比赛中使用了不现实的分数,但这很容易看出发生了什么。

这可以使用
数据。table

library(data.table)
nba = data.table(player = 1:100, team = rep(LETTERS[1:10], 
                      each = 10), ppg = 1:100)
nba[, as.list(tail(sort(ppg), 5)), by = team]

我在每场比赛中使用了不现实的分数,但这很容易看出发生了什么。

这可以使用
数据。table

library(data.table)
nba = data.table(player = 1:100, team = rep(LETTERS[1:10], 
                      each = 10), ppg = 1:100)
nba[, as.list(tail(sort(ppg), 5)), by = team]

我在每场比赛中使用了不现实的分数,但这很容易看出发生了什么。

这可以使用
数据。table

library(data.table)
nba = data.table(player = 1:100, team = rep(LETTERS[1:10], 
                      each = 10), ppg = 1:100)
nba[, as.list(tail(sort(ppg), 5)), by = team]

我在每场比赛中使用了一个不现实的分数,但它可以很容易地看到发生了什么。

使用软件包
库(dplyr)
库(tidyr)
,以及上面DaveTurek生成的假数据,下面是一个分步解决方案:

生成假数据:

nba=data.frame(player=1:100,team=rep(LETTERS[1:10],each=10),ppg=1:100)
通过分组、排序和切片,每个团队仅选择前5名得分手:

top_scorers <- nba %>% group_by(team) %>% arrange(-ppg) %>% slice(1:5)
top_Scores%分组(团队)%%>%arrange(-ppg)%%>%slice(1:5)
创建一个名为scoreRank的新变量,用于分配他们在团队中的排名,其中1是最高得分,5是第5高得分:

top_scorers %<>% group_by(team) %>% mutate (scoreRank = rank(-ppg))
得分最高者%%group\u by(team)%%>%mutate(scoreRank=rank(-ppg))
删除“播放器名称”列并强制转换为数据帧(dplyr中的数据帧需要后者):

top_得分者%select(-player))
将数据帧扩展为所需的宽格式,而不是当前的长格式:

result <- spread(top_scorers,scoreRank,ppg)

result使用软件包
library(dplyr)
library(tidyr)
,以及上面由DaveTurek生成的伪数据,以下是一个分步解决方案:

生成假数据:

nba=data.frame(player=1:100,team=rep(LETTERS[1:10],each=10),ppg=1:100)
通过分组、排序和切片,每个团队仅选择前5名得分手:

top_scorers <- nba %>% group_by(team) %>% arrange(-ppg) %>% slice(1:5)
top_Scores%分组(团队)%%>%arrange(-ppg)%%>%slice(1:5)
创建一个名为scoreRank的新变量,用于分配他们在团队中的排名,其中1是最高得分,5是第5高得分:

top_scorers %<>% group_by(team) %>% mutate (scoreRank = rank(-ppg))
得分最高者%%group\u by(team)%%>%mutate(scoreRank=rank(-ppg))
删除“播放器名称”列并强制转换为数据帧(dplyr中的数据帧需要后者):

top_得分者%select(-player))
将数据帧扩展为所需的宽格式,而不是当前的长格式:

result <- spread(top_scorers,scoreRank,ppg)

result使用软件包
library(dplyr)
library(tidyr)
,以及上面由DaveTurek生成的伪数据,以下是一个分步解决方案:

生成假数据:

nba=data.frame(player=1:100,team=rep(LETTERS[1:10],each=10),ppg=1:100)
通过分组、排序和切片,每个团队仅选择前5名得分手:

top_scorers <- nba %>% group_by(team) %>% arrange(-ppg) %>% slice(1:5)
top_Scores%分组(团队)%%>%arrange(-ppg)%%>%slice(1:5)
创建一个名为scoreRank的新变量,用于分配他们在团队中的排名,其中1是最高得分,5是第5高得分:

top_scorers %<>% group_by(team) %>% mutate (scoreRank = rank(-ppg))
得分最高者%%group\u by(team)%%>%mutate(scoreRank=rank(-ppg))
删除“播放器名称”列并强制转换为数据帧(dplyr中的数据帧需要后者):

top_得分者%select(-player))
将数据帧扩展为所需的宽格式,而不是当前的长格式:

result <- spread(top_scorers,scoreRank,ppg)

result使用软件包
library(dplyr)
library(tidyr)
,以及上面由DaveTurek生成的伪数据,以下是一个分步解决方案:

生成假数据:

nba=data.frame(player=1:100,team=rep(LETTERS[1:10],each=10),ppg=1:100)
通过分组、排序和切片,每个团队仅选择前5名得分手:

top_scorers <- nba %>% group_by(team) %>% arrange(-ppg) %>% slice(1:5)
top_Scores%分组(团队)%%>%arrange(-ppg)%%>%slice(1:5)
创建一个名为scoreRank的新变量,用于分配他们在团队中的排名,其中1是最高得分,5是第5高得分:

top_scorers %<>% group_by(team) %>% mutate (scoreRank = rank(-ppg))
得分最高者%%group\u by(team)%%>%mutate(scoreRank=rank(-ppg))
删除“播放器名称”列并强制转换为数据帧(dplyr中的数据帧需要后者):

top_得分者%select(-player))
将数据帧扩展为所需的宽格式,而不是当前的长格式:

result <- spread(top_scorers,scoreRank,ppg)

result发帖时请遵循以下指导原则:从答案中可以看出,这可以在没有for循环的情况下更整洁地完成。请参阅的第3圈。发布时请遵循以下指导原则:正如您从答案中看到的,这可以在不使用for循环的情况下更整洁地完成。请参阅的第3圈。发布时请遵循以下指导原则:正如您从答案中看到的,这可以在不使用for循环的情况下更整洁地完成。请参阅的第3圈。发布时请遵循以下指导原则:正如您从答案中看到的,这可以在不使用for循环的情况下更整洁地完成。请参见本手册的圆圈3。