R 我如何找到哪个国家完成马拉松的平均时间最低?

R 我如何找到哪个国家完成马拉松的平均时间最低?,r,R,我有一个数据集,其中有一列国家和一列他们跑马拉松所花费的时间。我想知道哪5个国家平均在最短的时间内完成。我是新手,所以只有基本知识。时间列以小时为单位。例如:marathon$Countries是每个跑步者国籍的一列,marathon$OverallHrs是每个跑步者完成马拉松所需的总时间 我试过了 tapply(marathon$OverallHrs, marathon$Country, mean) 它没有按照我希望的方式工作我假设你指的不是一个小案例,即你的“国家”栏中没有重复的国家。对于

我有一个数据集,其中有一列国家和一列他们跑马拉松所花费的时间。我想知道哪5个国家平均在最短的时间内完成。我是新手,所以只有基本知识。时间列以小时为单位。例如:marathon$Countries是每个跑步者国籍的一列,marathon$OverallHrs是每个跑步者完成马拉松所需的总时间

我试过了

tapply(marathon$OverallHrs, marathon$Country, mean)

它没有按照我希望的方式工作

我假设你指的不是一个小案例,即你的“国家”栏中没有重复的国家。对于R的初学者,我强烈建议使用“tidyverse”软件包开始学习

下面是解决方案,您可以在“国家”列中重复输入国家

库(tidyverse)
种子集(123)
#生成10个国家,每个国家5次
A=样品(代表(1:10,5))
#从(5-20)生成50个随机定时
B=圆形(runif(50)*15+5)
#创建包含列(国家、时间)的数据框,行数=50
df=数据帧(“国家”=粘贴0(“国家”,A),
“定时”=B)
#Dataframe将如下所示
#国家时间安排
#1国家5 15
#2国家4 17
#3国家4 5
#4国家3 12
#5国家5 16
#计算平均马拉松计时
df_平均值%
按(国家)分组%>%分组
总结(平均时间=平均时间),.groups='drop')%>%计算平均时间
安排(平均时间)#先按最快时间安排
#数据帧=df_平均值
#一个tibble:10x2
#国家平均时间
#            
#1.9 10.6
#2.11.4
#3.3 11.4
#4.4 11.4
#5.2 12.2
#6.10 12.6
#7.8 13.2
#8.7 13.6
#9国家5 15
#10.6 15.2
#要获得前5个国家,只需
df_表示$Country[1:5]
#“Country9”“Country1”“Country3”“Country4”“Country2”
R中始终存在用于计算每组平均值的聚合函数。代码更少,但我仍然更喜欢tidyverse方法,因为它在一段时间后使用起来很直观,可以稍微调整以解决任何数据帧问题。 无论如何,这里是使用聚合的解决方案

df_mean2 <- aggregate(df[, 2], list(df$Country), mean) # Calculate Mean
df_mean2[order(df_mean2$x), ] # Sort by ascending
     Group.1    x
10  Country9 10.6
1   Country1 11.4
4   Country3 11.4
5   Country4 11.4
3   Country2 12.2
2  Country10 12.6
9   Country8 13.2
8   Country7 13.6
6   Country5 15.0
7   Country6 15.2

df_mean 2我假设您指的不是一个小案例,即您的“国家”栏中没有重复的国家。对于R的初学者,我强烈建议使用“tidyverse”软件包开始学习

下面是解决方案,您可以在“国家”列中重复输入国家

库(tidyverse)
种子集(123)
#生成10个国家,每个国家5次
A=样品(代表(1:10,5))
#从(5-20)生成50个随机定时
B=圆形(runif(50)*15+5)
#创建包含列(国家、时间)的数据框,行数=50
df=数据帧(“国家”=粘贴0(“国家”,A),
“定时”=B)
#Dataframe将如下所示
#国家时间安排
#1国家5 15
#2国家4 17
#3国家4 5
#4国家3 12
#5国家5 16
#计算平均马拉松计时
df_平均值%
按(国家)分组%>%分组
总结(平均时间=平均时间),.groups='drop')%>%计算平均时间
安排(平均时间)#先按最快时间安排
#数据帧=df_平均值
#一个tibble:10x2
#国家平均时间
#            
#1.9 10.6
#2.11.4
#3.3 11.4
#4.4 11.4
#5.2 12.2
#6.10 12.6
#7.8 13.2
#8.7 13.6
#9国家5 15
#10.6 15.2
#要获得前5个国家,只需
df_表示$Country[1:5]
#“Country9”“Country1”“Country3”“Country4”“Country2”
R中始终存在用于计算每组平均值的聚合函数。代码更少,但我仍然更喜欢tidyverse方法,因为它在一段时间后使用起来很直观,可以稍微调整以解决任何数据帧问题。 无论如何,这里是使用聚合的解决方案

df_mean2 <- aggregate(df[, 2], list(df$Country), mean) # Calculate Mean
df_mean2[order(df_mean2$x), ] # Sort by ascending
     Group.1    x
10  Country9 10.6
1   Country1 11.4
4   Country3 11.4
5   Country4 11.4
3   Country2 12.2
2  Country10 12.6
9   Country8 13.2
8   Country7 13.6
6   Country5 15.0
7   Country6 15.2

df_mean2“马拉松”是众所周知的数据集吗?它似乎不在我的预加载数据集中(通过运行
data()
查看)。您应该在问题中添加一个数据示例。“marathon”是众所周知的数据集吗?它似乎不在我的预加载数据集中(通过运行
data()查看)
。你应该在你的问题中添加一个数据样本。谢谢你,安迪!你能帮我把这些结果绘制在直方图上吗?这些国家在底部,它们的平均值在y轴上?@DavidWall我想你的意思是条形图,而不是直方图。直方图只有一个变量。大多数人都有自己的偏好ces关于定制他们的条形图,你可以从这里开始。谢谢安迪!你能帮我将这些结果绘制在柱状图上吗?这些国家在底部,它们的平均值在y轴上?@DavidWall我想你的意思是条形图,而不是柱状图。柱状图只有一个变量。大多数人都有自己的偏好关于定制他们的条形图,你可以从这里开始。