Using pivot_wider in R to reshape biomarkHD data?

Using pivot_wider in R to reshape biomarkHD data?

Problem Description:

I have the following snippet of my dataframe. The values aren’t important. I am trying to get it to wide form using pivot_wider.

Dataset
id_1 <- c("S78-A01", "S78-A04", "S90-A01", "S90-A04", "S82-A01", "S82-A04", "S94-A01", "S94-A04", "S75-A01", "S75-A04", "S87-A01", "S87-A04")
id_2 <- c("CB-2_1:1024", "CB-2_1:1024", "CB-2_1:1024", "CB-2_1:1024", "CB-2_1:128", "CB-2_1:128", "CB-2_1:128", "CB-2_1:128", "CB-2_1:16", "CB-2_1:16", "CB-2_1:16", "CB-2_1:16")
Gene <- c("AIM2", "AIM2", "AIM2", "AIM2", "AIM2", "AIM2", "AIM2", "AIM2", "AIM2", "C1QB", "C1QB", "C1QB")
value1 <- c(-1.9975984661369099, 4.7789368498721396 , 3.3080754647069801, 6.9507934374320604, 2.55279730894866, 1.38567349551152, 1.99, 4.5115336458523103, 3.2588723737573799, 6.9433118002602097, 2.5897834603682202, 1.4031532547429899)

df <- data.frame(id1 =id_1, 
id2=id_2, 
Gene=Gene,
value1=value1)

# Pivot
df %>% pivot_wider(names_from = c("id2","Gene"),
                   values_from =  "value1")

However when I pivot I get the data as such with the headers like the below :

id1CB-2_1:1024_AIM2CB-2_1:128_AIM2CB-2_1:16_AIM2CB-2_1:16_C1QB
S78-A01-2NANANA
S78-A044.78NANANA

What I want is it in the form of the below. I will take as close to that as I can get. The data is too large too do manually with 9218 rows. Any ideas of where I am pivoting wrong? DOes what I want to do even make sense with pivot?

id2geneval1val2val3
CB-2_1:1024AIM2-1.9975894.7789373.308075
CB-2_1:128AIM22.5527972.5897831.403153
CB-2_1:16C1QB6.9433121.3856731.990000

Solution – 1

Do you mean this?

library(dplyr)
library(tidyr)
df %>%
  group_by(id2, Gene) %>%
  mutate(rn = paste0("value", row_number())) %>%
  ungroup() %>%
  pivot_wider(c(id2, Gene), names_from = "rn", values_from = "value1")
# # A tibble: 4 x 6
#   id2         Gene  value1 value2 value3 value4
#   <chr>       <chr>  <dbl>  <dbl>  <dbl>  <dbl>
# 1 CB-2_1:1024 AIM2   -2.00   4.78   3.31   6.95
# 2 CB-2_1:128  AIM2    2.55   1.39   1.99   4.51
# 3 CB-2_1:16   AIM2    3.26  NA     NA     NA   
# 4 CB-2_1:16   C1QB    6.94   2.59   1.40  NA   
Rate this post
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept
Reject