R 计算变量排序
我正在使用R 计算变量排序,r,dplyr,R,Dplyr,我正在使用Ecdat软件包中的香烟数据集。我需要找出1985年至1995年期间,包装数量/人均销售量的年排名中位数。以及最低的,即更高的等级被定义为拥有更多的包/人均 我尝试过根据年份进行过滤,并使用中位数(packpc)计算中位数packs变量,并按该变异变量进行排列,但仍然会得到错误消息 有什么建议吗?你想要的是总结: library(Ecdat) library(dplyr) Cigarette %>% filter(year>=1985, year<=1995)
Ecdat
软件包中的香烟
数据集。我需要找出1985年至1995年期间,包装数量/人均销售量的年排名中位数。以及最低的,即更高的等级被定义为拥有更多的包/人均
我尝试过根据年份进行过滤,并使用中位数(packpc)计算中位数packs变量,并按该变异变量进行排列,但仍然会得到错误消息
有什么建议吗?你想要的是
总结:
library(Ecdat)
library(dplyr)
Cigarette %>%
filter(year>=1985, year<=1995) %>%
summarise(min=min(packpc), median=median(packpc), max=max(packpc))
#> min median max
#> 1 49.2722 105.9096 197.994
库(Ecdat)
图书馆(dplyr)
香烟%>%
过滤器(年份>=1985,年份%
总结(最小值=最小值(packpc),中值=中值(packpc),最大值=最大值(packpc))
#>最小中值最大值
#> 1 49.2722 105.9096 197.994
当您将dplyr
标记添加到此问题时,您可能需要查看此软件包的教程
PS:如果这是你的家庭作业,你应该把它说清楚,这样我们就不会只给出答案。我想这个想法是要得到各州每年的排名,然后找出这些年排名的中位数和最小值
由于数据集仅包括1985年至1995年,因此不需要筛选ing
所以我想出了一个相当丑陋的解决方案:
ranks_perYear <- aggregate(packpc ~ year, Cigarette, rank)$packpc
colnames(ranks_perYear) <- levels(Cigarette$state)
medianRank <- apply(ranks_perYear, 2, median)
minRank <- apply(ranks_perYear, 2, min)
ranks_perYear什么是“年排名中位数”?如果你有100个观察结果,并对它们进行任何排序,中位数是50。