combing row 1 with 2 and 3 with 4 etc. in a certain column

I have a dataset where I want to combine every two rows together. The two row are identical except for B column; the odd rows has letters and the even rows have numbers.

Subject               B               Gender
1a                    t                  m
1b                    5                  m
2a                    n                  m
2b                    6                  m
...                  ...                ...
...                  ...                ...

The output that I'm looking for is something like:

 A                          B               Gender
1a-b                       t-5                 m
2a-b                       n-6                 m
...                        ...                ...
...                        ...                ...

Thanks in advance!

Here is one method.

DF <- data.frame(Subject = c("1a","1b","2a","2b"), B = c("t", "5", "n", "6"),
                  Gender = c("m", "m", "m", "m"))
DF
  Subject B Gender
1      1a t      m
2      1b 5      m
3      2a n      m
4      2b 6      m
library(tidyr)
library(dplyr)

DF %>% separate(col = Subject, into = c("Number", "Letter"), sep = -1) %>% 
   pivot_wider(names_from = "Letter", values_from = "B") %>% 
   unite("B", a, b, sep= "-") %>% 
   mutate(Number = paste0(Number, "a-b"))

# A tibble: 2 x 3
  Number Gender B    
  <chr>  <chr>  <chr>
1 1a-b   m      t-5  
2 2a-b   m      n-6  
1 Like

Thank you, @FJCC! It works.

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.