需要使用 R 找出哪些球员在哪一年踢球
Need to find which players played in which year(s) using R
我有棒球数据,需要找到哪些球员 --
- 1945 年演奏但 1946 年未演奏。
- 这两年都没有参加比赛。
- 1945 年和 1946 年都演奏过。
对于 #1,所需的输出将是 --
player
Albert
Barnes
对于 #2,所需的输出将是 --
player
Andrews
David
对于 #3,所需的输出将是 --
player
Baker
Frank
我更喜欢 dplyr 解决方案,但对其他人开放。我在 Whosebug 中找不到符合我情况的解决方案。如果有的话,如果你能分享它我将不胜感激 link.
输入样本
Dput数据样本
structure(list(player = c("Albert", "Andrews", "Baker", "Charles",
"Baker", "David", "Frank", "Barnes", "Ross", "Frank", "Frank"
), year = c(1945, 1944, 1946, 1946, 1945, 1947, 1945, 1945, 1946,
1946, 1947)), class = "data.frame", row.names = c(NA, -11L))
应该这样做:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dat <- structure(list(player = c("Albert", "Andrews", "Baker", "Charles",
"Baker", "David", "Frank", "Barnes", "Ross", "Frank", "Frank"
), year = c(1945, 1944, 1946, 1946, 1945, 1947, 1945, 1945, 1946,
1946, 1947)), class = "data.frame", row.names = c(NA, -11L))
dat %>%
group_by(player) %>%
filter(1945 %in% year & ! 1946 %in% year) %>%
select(player)
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Albert
#> 2 Barnes
dat %>%
group_by(player) %>%
filter(! 1945 %in% year & ! 1946 %in% year) %>%
select(player)
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Andrews
#> 2 David
dat %>%
group_by(player) %>%
filter(all(c(1945, 1946) %in% year)) %>%
select(player) %>%
distinct()
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Baker
#> 2 Frank
由 reprex package (v2.0.1)
于 2022-05-03 创建
我有棒球数据,需要找到哪些球员 --
- 1945 年演奏但 1946 年未演奏。
- 这两年都没有参加比赛。
- 1945 年和 1946 年都演奏过。
对于 #1,所需的输出将是 --
player
Albert
Barnes
对于 #2,所需的输出将是 --
player
Andrews
David
对于 #3,所需的输出将是 --
player
Baker
Frank
我更喜欢 dplyr 解决方案,但对其他人开放。我在 Whosebug 中找不到符合我情况的解决方案。如果有的话,如果你能分享它我将不胜感激 link.
输入样本
Dput数据样本
structure(list(player = c("Albert", "Andrews", "Baker", "Charles",
"Baker", "David", "Frank", "Barnes", "Ross", "Frank", "Frank"
), year = c(1945, 1944, 1946, 1946, 1945, 1947, 1945, 1945, 1946,
1946, 1947)), class = "data.frame", row.names = c(NA, -11L))
应该这样做:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
dat <- structure(list(player = c("Albert", "Andrews", "Baker", "Charles",
"Baker", "David", "Frank", "Barnes", "Ross", "Frank", "Frank"
), year = c(1945, 1944, 1946, 1946, 1945, 1947, 1945, 1945, 1946,
1946, 1947)), class = "data.frame", row.names = c(NA, -11L))
dat %>%
group_by(player) %>%
filter(1945 %in% year & ! 1946 %in% year) %>%
select(player)
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Albert
#> 2 Barnes
dat %>%
group_by(player) %>%
filter(! 1945 %in% year & ! 1946 %in% year) %>%
select(player)
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Andrews
#> 2 David
dat %>%
group_by(player) %>%
filter(all(c(1945, 1946) %in% year)) %>%
select(player) %>%
distinct()
#> # A tibble: 2 × 1
#> # Groups: player [2]
#> player
#> <chr>
#> 1 Baker
#> 2 Frank
由 reprex package (v2.0.1)
于 2022-05-03 创建