我有一个非常大的数据集,其中一列(UNIQUEID)中有重复的值.我想要按该列分组,从最近一个季度的第LAT, LONG行中 Select 值(标识第Q4 2023, Q3 2023, Q2 2023行=1),同时也跨最后三个季度的行进行折叠.
例如,我的数据如下所示:
UNIQUEID LAT LONG Q4 2023 Q3 2023 Q2 2023
1: 8F5 51 -8 1 NA NA
2: W7T 53 -6 1 NA NA
3: 9F2 51 -8 NA 1 NA
4: 8F5 51 -9 NA 1 1
5: 9F2 58 -8 NA 1 1
6: W7T 53 -6 NA 1 NA
而我正在寻找的结果是:
UNIQUEID LAT LONG Q4 2023 Q3 2023 Q2 2023
1: 8F5 51 -8 1 1 1
2: W7T 53 -6 1 1 NA
3: 9F2 51 -8 NA 1 1
到目前为止,我所做的最好的事情就是对所有事情进行总结:
df <- df %>%
group_by(UNIQUEID) %>%
summarise(across(everything(), ~ paste(unique(.x[!is.na(.x)]), collapse = ", ")))
但我不确定我是否能保证取LAT/LONG个单元格中的第一个值就能得到最近一个季度的数据.我认为应该是这样,但我想确定一下.
或者,我可以重新运行原始表,这样我使用的不是1和NA,而是每个季度的降级值(例如2023年第4季度=20或NA;2023年第3季度=19或NA)?但是,我仍然不确定如何获取列列表中的最大值.
我不想取消透视这些季度列,因为数据集现在大约.300万行,我正在努力保持它的可控性.
DATA个
structure(list(UNIQUEID = c("8F5", "W7T", "9F2", "8F5", "9F2",
"W7T"), LAT = c(51L, 53L, 51L, 51L, 58L, 53L), LONG = c(-8L,
-6L, -8L, -9L, -8L, -6L), Q4.2023 = c(1L, 1L, NA, NA, NA, NA),
Q3.2023 = c(NA, NA, 1L, 1L, 1L, 1L), Q2.2023 = c(NA, NA,
NA, 1L, 1L, NA)), class = "data.frame", row.names = c(NA,
-6L))