簡體   English   中英

按條件分組,無聚合 R

[英]Group by condition with no aggregate R

我有一個 dataframe,我想按 ID 和日期分組,但沒有任何聚合 function。因為我的 dataframe 是這樣的

ID 日期 值 1 值 2 值 3 值 4
ID1 2018-02-08 01:00:00 10 北美 北美 北美
ID1 2018-02-08 01:00:00 北美 30 北美 北美
ID1 2018-02-08 01:00:00 北美 北美 90后 北美
ID1 2018-02-08 01:00:00 北美 北美 北美 60

我想要做的是向上移動連續列的值,以便在一行中具有相同 DATE 和相同 ID 的值。

預期結果

ID 日期 值 1 值 2 值 3 值 4
ID1 2018-02-08 01:00:00 10 30 90后 60

我不確定“聚合函數”是什么意思。 你能解釋一下你的意思嗎?

我會這樣做的,但我懷疑這不是您要找的東西?

library(tidyverse)

d <-structure(list(ID = c("ID1", "ID1", "ID1", "ID1"), 
                   DATE = c("2018-02-08 01:00:00","2018-02-08 01:00:00", 
                            "2018-02-08 01:00:00", "2018-02-08 01:00:00"),
                   VAL.1 = c(10L, NA, NA, NA), 
                   VAL.2 = c(NA, 30L, NA, NA), 
                   VAL.3 = c(NA, NA, 90L, NA), 
                   VAL.4 = c(NA, NA, NA, 60L)), 
              class = "data.frame", 
              row.names = c(NA,-4L))

d %>% pivot_longer(-c("ID", "DATE")) %>% 
  filter(!is.na(value)) %>% 
  pivot_wider(names_from = "name", values_from = "value")
#> # A tibble: 1 × 6
#>   ID    DATE                VAL.1 VAL.2 VAL.3 VAL.4
#>   <chr> <chr>               <int> <int> <int> <int>
#> 1 ID1   2018-02-08 01:00:00    10    30    90    60

創建於 2022-12-06,使用reprex v2.0.2

使用summarise with acrossna.omit

library(dplyr)
library(tidyr)

data |>
  group_by(ID, DATE) |>
  summarise(across(starts_with("VAL"), na.omit)) |>
  ungroup()

fillslice (或distinct ):

library(dplyr)
library(tidyr)

data |>
  group_by(ID, DATE) |>
  fill(starts_with("VAL"), .direction = "downup") |>
  slice(1) |>
  ungroup()

Output:

# A tibble: 1 × 6
  ID    DATE        VAL1  VAL2  VAL3  VAL4
  <chr> <date>     <dbl> <dbl> <dbl> <dbl>
1 ID1   2018-02-08    10    30    90    60

數據:

library(readr)

data <- read_table("ID  DATE    VAL1    VAL2    VAL3    VAL4
ID1 2018-02-08  10  NA  NA  NA
ID1 2018-02-08  NA  30  NA  NA
ID1 2018-02-08  NA  NA  90  NA
ID1 2018-02-08  NA  NA  NA  60")
``

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM