R 按年打造最受欢迎的汽车品牌
想象一下,一个非常大的数据库(Cars)包含某个国家的汽车品牌、年份和销量 Ex(完全随机):在.csv文件中,我们有:R 按年打造最受欢迎的汽车品牌,r,dplyr,R,Dplyr,想象一下,一个非常大的数据库(Cars)包含某个国家的汽车品牌、年份和销量 Ex(完全随机):在.csv文件中,我们有: carbrand - year - sales toyota - 1950 - 3540 toyota - 1951 - 3433 toyota - 1952 - 3678 ... ford - 1950 - 4322 ford - 1951 - 2987 ... subaru - 1950 - 6544 subaru - 1951 - 5454 ... 我想做的是建立每年
carbrand - year - sales
toyota - 1950 - 3540
toyota - 1951 - 3433
toyota - 1952 - 3678
...
ford - 1950 - 4322
ford - 1951 - 2987
...
subaru - 1950 - 6544
subaru - 1951 - 5454
...
我想做的是建立每年最受欢迎的品牌。输出格式本身在这里不是很重要。只是在寻找想法。
例:
到目前为止,我所能做的是按销售最多的产品对它们进行排名:
Cars <- read_delim("file.csv",delim=" - ")
Cars %>% arrange(desc(sales))
只需按
年份分组
,按降序排序,并保留每组的第一行
library(dplyr)
Cars %>%
group_by(Year) %>%
arrange(desc(Quant)) %>%
slice(1)
## A tibble: 3 x 3
## Groups: Year [3]
# Car Year Quant
# <chr> <dbl> <int>
#1 subaru 1950 6544
#2 subaru 1951 5454
#3 toyota 1952 3678
库(dplyr)
汽车%>%
组别(年份)%>%
排列(描述(数量))%>%
切片(1)
##一个tibble:3x3
##组别:年份[3]
#汽车年数量
#
#1斯巴鲁1950 6544
#2斯巴鲁1951 5454
#3丰田1952 3678
数据
cars <- "
Car - Year - Quant
subaru - 1950 - 6544
subaru - 1951 - 5454
ford - 1950 - 4322
toyota - 1952 - 3678
toyota - 1950 - 3540
toyota - 1951 - 3433
ford - 1951 - 2987"
tc <- textConnection(cars)
Cars <- read.delim(tc, sep = "-")
close(tc)
cars请提供一个最小的可复制示例:我不清楚您显示的数据是否存储在不同的列中,或者这是否是一个串联列,您首先要将特定部分提取到它们自己的列中。您可以发布样本数据吗?请使用dput(Cars)
的输出编辑问题。或者,如果输出的dput(head(Cars,20))
太大,这正是我需要的!非常感谢你。
library(dplyr)
Cars %>%
group_by(Year) %>%
arrange(desc(Quant)) %>%
slice(1)
## A tibble: 3 x 3
## Groups: Year [3]
# Car Year Quant
# <chr> <dbl> <int>
#1 subaru 1950 6544
#2 subaru 1951 5454
#3 toyota 1952 3678
cars <- "
Car - Year - Quant
subaru - 1950 - 6544
subaru - 1951 - 5454
ford - 1950 - 4322
toyota - 1952 - 3678
toyota - 1950 - 3540
toyota - 1951 - 3433
ford - 1951 - 2987"
tc <- textConnection(cars)
Cars <- read.delim(tc, sep = "-")
close(tc)