【发布时间】:2020-11-30 19:38:34
【问题描述】:
我有以下代码:
gm <- c("Alex", "Ashton", "Brett", "Chris", "Dave", "Ian", "Jack", "Jon", "Katz", "Mikulich", "Nate", "Todd")
year <- (2012:2019)
# podium placement, by year
first <- c("Mikulich", "Nate", "Nate", "Chris", "Nate", "Nate", "Dave", "Dave")
second <- c("Jon", "Alex", "Ian", "Todd", "Jon", "Chris", "Jon", "Jon")
third <- c("Katz", "Katz", "Jack", "Dave", "Katz", "Katz", "Chris", "Todd")
podium <- tibble(year, first, second, third)
产生以下小标题,podium:
year first second third
<int> <chr> <chr> <chr>
2012 Mikulich Jon Katz
2013 Nate Alex Katz
2014 Nate Ian Jack
2015 Chris Ross Dave
2016 Nate Jon Katz
2017 Nate Chris Katz
2018 Dave Jon Chris
2019 Dave Jon Ross
我想要一个 tibble 或数据框 (12x4),列出每个 GM 并计算前 3 名完成的数量,输出如下所示:
GM first second third
<chr> <int> <int> <int>
Alex 0 1 0
Ashton 0 0 0
Brett 0 0 0
Chris 1 1 1
Dave 2 0 1
Ian 0 1 0
Jack 0 0 1
Jon 0 4 0
Katz 0 0 4
Mikulich 1 0 0
Nate 4 0 0
Todd 0 1 1
我可以使用podium %>% count(first) 来获得单独的分布,但我想知道是否有更有效的方法来创建整个表。
podium %>% count(first):
first n
<chr> <int>
Chris 1
Dave 2
Mikulich 1
Nate 4
【问题讨论】:
-
你能查一下
length(unique(unlist(podium[-1])))# [1] 10
标签: r dataframe tidyverse tibble