我有一个非常大的数据集,其中一列(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))

推荐答案

df |>
  group_by(UNIQUEID) |>
  tidyr::fill(Q4.2023:Q2.2023,  .direction = "downup") |>
  ungroup() |>
  slice(1, .by = UNIQUEID) 


# A tibble: 3 × 6
  UNIQUEID   LAT  LONG Q4.2023 Q3.2023 Q2.2023
  <chr>    <int> <int>   <int>   <int>   <int>
1 8F5         51    -8       1       1       1
2 W7T         53    -6       1       1      NA
3 9F2         51    -8      NA       1       1

R相关问答推荐

以R表示的gglikert地块调整总数

如何在四进制仪表板值框中显示值(使用shiny 的服务器计算)

R:连接值,而不是变量?

如何按排序顺序打印一个框架中所有精确的唯一值?

多重RHS固定估计

derrr mutate case_when grepl不能在R中正确返回值

bslib::card_header中的shine::downloadButton,图标而不是文本

plotly hover文本/工具提示在shiny 中不起作用

方法::slotName如何处理非类、非字符的参数?

合并后返回列表的数据帧列表

R-按最接近午夜的时间进行筛选

如何删除R中除数字元素以外的所有元素

计算来自单独分组的分幅的值的百分位数

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价

conditionPanel不考虑以下条件

使用列名和r中的前缀 Select 列的CREATE函数

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

R/shiny APP:如何充分利用窗口?

在具有条件的循环中添加行

为什么在POSIXct-times的向量上循环会改变R中的类型?