我正在尝试修改 R 中的表。我有一个包含数千行的表,我想删除重复的行(包)并修改这些行的输入和输出日期(在删除它们之前)。目标是获取重复行中较早的 IN-DATE 和较早的 OUT-DATE。
Package;IN-DATE;OUT-DATE
AMFU12;2023-01-30;2023-01-30
AXIU18;2023-01-11;2023-01-11
FANU45;2022-11-11;2023-01-23
FANU45;2022-11-11;2023-01-23
QIBU55;2023-01-11;2023-01-23
QIBU55;2023-01-23;2023-01-30
最后,我想获得具有唯一包列并修改输入和输出日期的表,如下所示:
Package; IN-DATE ;OUT-DATE
AMFU12 ; 2023-01-30 ;2023-01-30
AXIU18 ; 2023-01-11 ;2023-01-11
FANU45 ; 2022-11-11 ;2023-01-23
QIBU55 ; 2023-01-11 ;2023-01-30
此时我只能删除所有重复的行。我不知道如何包含具有修改输入和输出日期的重复行。
duplicates <-
packages %>%
group_by(Package) %>%
mutate(duplicate = n()) %>%
filter(duplicate > 1) %>%
select(-duplicate)
在这种情况下,我将不胜感激您的建议。也许你可以在这个问题上找到不同的方法。
您可以通过使用 dplyr 包根据“Package”列删除重复行,然后修改“IN-DATE”和“OUT-DATE”列以保留最早的“IN-DATE”和“OUT-DATE”列来实现 R 中的目标每个独特“包”的最新“过时”。具体方法如下:
# Sample data with corrected column names
data <- data.frame(
Package = c("AMFU12", "AXIU18", "FANU45", "FANU45", "QIBU55", "QIBU55"),
IN_DATE = as.Date(c("2023-01-30", "2023-01-11", "2022-11-11", "2022-11-11", "2023-01-11", "2023-01-23")),
OUT_DATE = as.Date(c("2023-01-30", "2023-01-11", "2023-01-23", "2023-01-23", "2023-01-23", "2023-01-30"))
)
library(dplyr)
# Group by Package, retain earliest IN_DATE and latest OUT_DATE
result <- data %>%
group_by(Package) %>%
summarize(
IN_DATE = min(IN_DATE),
OUT_DATE = max(OUT_DATE)
) %>%
ungroup()
# Print the result
print(result)
结果如下
Package IN_DATE OUT_DATE
<chr> <date> <date>
1 AMFU12 2023-01-30 2023-01-30
2 AXIU18 2023-01-11 2023-01-11
3 FANU45 2022-11-11 2023-01-23
4 QIBU55 2023-01-11 2023-01-30