我正在嘗試創建一個新表,其中 table1 按 ID 分組,并且僅從 table1$new 中選擇最近的日期。
我有下表:
第一表:
| ID | 地位 | 日期 |
|---|---|---|
| 001 | 1003 | 2021-02-01 |
| 001 | 1003 | 2021-02-01 |
| 001 | 1003 | 2021-02-21 |
| 001 | 1003 | 2021-04-21 |
| 002 | 1003 | 2021-05-01 |
| 002 | 1003 | 2021-05-01 |
| 002 | 1003 | 2021-05-21 |
| 002 | 1003 | 2021-07-21 |
| 003 | 1004 | 2021-05-01 |
| 003 | 1004 | 2021-05-01 |
| 003 | 1004 | 2021-05-21 |
| 003 | 1004 | 2021-07-21 |
電流輸出
| ID | 地位 | 日期 |
|---|---|---|
| 001 | 1003 | 2021-02-01 |
| 001 | 1003 | 2021-02-01 |
| 001 | 1003 | 2021-02-21 |
| 001 | 1003 | 2021-04-21 |
| 002 | 1003 | 2021-05-01 |
| 002 | 1003 | 2021-05-01 |
| 002 | 1003 | 2021-05-21 |
| 002 | 1003 | 2021-07-21 |
期望的輸出:
| ID | 新的 |
|---|---|
| 001 | 2021-4-21 |
| 002 | 2021-07-21 |
這是我現在的代碼
desired <- table1 %>%
group_by(ID) %>%
subset(Status == '1003', select = c("ID", "Date")) %>% rename(New = Date)
我認為我的第一個錯誤是在 group_by 中,我不確定如何只保留最近的日期。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
我會dplyr::slice_max()用來選擇最近的日期。
library(tidyverse)
d <- tibble::tribble(
~ID, ~Status, ~Date,
"001", 1003L, "2021-02-01",
"001", 1003L, "2021-02-01",
"001", 1003L, "2021-02-21",
"001", 1003L, "2021-04-21",
"002", 1003L, "2021-05-01",
"002", 1003L, "2021-05-01",
"002", 1003L, "2021-05-21",
"002", 1003L, "2021-07-21",
"003", 1004L, "2021-05-01",
"003", 1004L, "2021-05-01",
"003", 1004L, "2021-05-21",
"003", 1004L, "2021-07-21"
)
res <- d |>
mutate(Date = lubridate::ymd(Date)) |>
dplyr::filter(Status == 1003) |>
group_by(ID) |>
slice_max(Date, n = 1) |>
ungroup() |>
select(ID, New = Date) # rename variable in the selection of variables
res
#> # A tibble: 2 x 2
#> ID New
#> <chr> <date>
#> 1 001 2021-04-21
#> 2 002 2021-07-21
由reprex 包于 2022-06-15 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492074.html
上一篇:PostgreSQL:僅當列中的值不同時才選擇最新條目
下一篇:按連續日期分組R
