年 | 身份證 | 類型
2000 1 O
2000 1 O
2000 1 O
2000 1 O
2000 1 R
2017 5 O
2017 5 O
2000 8 R
2000 8 O
2002 8 O
我想創建一個代碼,按年份和 ID 對數據進行分組(我想它會使用 Dplyr)但它需要有一個條件:如果在給定的年份中存在與 ID 關聯的任何類型 R,那麼我希望它選擇類型R。如果它只有O類型,那麼輸出一定是O。
示例:
年份 | 身份證 | 鍵入
2000 1個R
2017年5 O
2000 8 R
2002年8 O
謝謝大家
我們可以做一個arrange
在邏輯向量(TRUE
後自帶FALSE
按字母順序排列)和slice
分組後的第一行
library(dplyr)
df1 %>%
arrange(Year, ID, Type == 'O') %>%
group_by(Year, ID) %>%
slice_head(n = 1) %>%
ungroup
-輸出
# A tibble: 4 × 3
Year ID Type
<int> <int> <chr>
1 2000 1 R
2 2000 5 O
3 2000 8 R
4 2002 8 O
或者在arrange
使用後distinct
返回第一個非重複行
df1 %>%
arrange(Year, ID, Type == 'O') %>%
distinct(Year, ID, .keep_all = TRUE)
-輸出
Year ID Type
1 2000 1 R
2 2000 5 O
3 2000 8 R
4 2002 8 O
df1 <- structure(list(Year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L,
2000L, 2000L, 2000L, 2002L), ID = c(1L, 1L, 1L, 1L, 1L, 5L, 5L,
8L, 8L, 8L), Type = c("O", "O", "O", "O", "R", "O", "O", "R",
"O", "O")), class = "data.frame", row.names = c(NA, -10L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句