Home > Back-end >  Merge/combine Row based on unique value in R
Merge/combine Row based on unique value in R

Time:02-18

My data :

enter image description here

I want the output this way :

enter image description here

I already played around with aggregate, merge and group_by functions but the output does not come out the way I want.

CodePudding user response:

One way, using tidyr::separate:

d %>% 
  group_by(V1) %>% 
  summarise(V2 = toString(V2)) %>% 
  separate(V2, into = c("V2", "V1"))

# A tibble: 2 x 2
  V2    V1   
  <chr> <chr>
1 A     C    
2 B     D   

CodePudding user response:

You could do:

library(tidyverse)

df <- data.frame(V1 = c(1,2,1,2),
                 V2 = LETTERS[1:4])

df %>%
  mutate(id = rep(1:2, each = 2)) %>%
  pivot_wider(names_from = V1,
              names_prefix = 'V',
              values_from = V2) %>%
  select(-id)

Which gives:

# A tibble: 2 x 2
  V1    V2   
  <chr> <chr>
1 A     B    
2 C     D 

CodePudding user response:

How about -

library(dplyr)

df <- tibble(V1 = rep(1:2, 2), V2 = LETTERS[1:4])

df %>% 
  left_join(df, by = "V1") %>% 
  filter(V2.x != V2.y & V2.x %in% c("A", "B")) %>% 
  select(V1 = V2.y, V2 = V2.x)

# A tibble: 2 x 2
  V1    V2   
  <chr> <chr>
1 C     A    
2 D     B  
  • Related