Combining pivoted rows in R by common value

后端 未结 4 1642
天涯浪人
天涯浪人 2020-12-04 03:17

I have a data frame that looks like this

Name    Visit     Arrival      Departure

Jack    week 1     8:00         NA
Jack    week 1      NA          8:30
Sa         


        
4条回答
  •  借酒劲吻你
    2020-12-04 03:25

    Here's one approach, assuming that person who visited will have exactly two rows of data:

    library(dplyr)
    
    df = readr::read_table("Name    Visit     Arrival      Departure
    Jack    week 1     8:00         NA
    Jack    week 1      NA          8:30
    Sally   week 5     9:00         NA
    Sally   week 5      NA          9:30
    Adam    week 2     2:00         NA
    Adam    week 2      NA          3:00", col_types="cccc")
    
    df %>% 
      group_by(Name, Visit) %>% 
      mutate(Arrival = ifelse(is.na(Arrival), lag(Arrival), Arrival), 
             Departure = ifelse(is.na(Departure), lead(Departure), Departure)) %>% 
      ungroup() %>% 
      distinct(Name, Visit, .keep_all=TRUE)
    
    # A tibble: 3 × 4
       Name  Visit Arrival Departure
                
    1  Jack week 1    8:00      8:30
    2 Sally week 5    9:00      9:30
    3  Adam week 2    2:00      3:00
    

提交回复
热议问题