Hi Everyone,
I am wondering if anyone can help to suggest the way to reshape or reframe data from long to wide.
I attached jpg for your review.
Not sure how to do it.
I appreciate any help.
Hi Everyone,
I am wondering if anyone can help to suggest the way to reshape or reframe data from long to wide.
I attached jpg for your review.
Not sure how to do it.
I appreciate any help.
Typically tidyverse package containing pivot_wider would be recommended.
Study the examples.
If you require further assistance, please provide a reprex, neither excel nor jpg/image is a good format for the task of communicating with the forum.
Hi Nirgrahamuk,
Thanks for your response. Could please suggest the code or script for me to start with?
I dont think you've spent any significant time reading the content that I linked you to ...
p.s. I wouldnt ever use such code; but only because I wouldnt aim for the sort of result you asked for; though appreciate I may be taking your ask too literally.
library(tidyverse)
(an_example_input <- tibble(
Source=
c("SP1",
"SP1",
"Rainfall",
"Runoff",
"SP2",
"SP2",
"SP2",
"Runoff"),
Target=
c(
"Evap",
"STWD",
"SP1",
"SP1",
"Evap",
"STWD",
"SP2",
"SP2"
)
))
true_sources <- c("SP1","SP2")
(fixed_1 <- an_example_input |>
mutate(switched=Target %in% true_sources,
osource = Source,
otarget= Target,
Source=if_else(switched,otarget,osource),
Target=if_else(switched,osource,otarget)))
(wider_1 <- select(fixed_1,Source,Target) |>
pivot_wider(names_from = "Source",
values_from="Target",
names_repair = "minimal") )
(wider_2 <- wider_1|> unnest_wider(col=true_sources,names_sep = "@"))
names(wider_2) <- gsub(pattern = "@.*",replacement = "",x=names(wider_2))
wider_2
A reprex
looks like this. It can be cut-and-pasted into a source pane to show exactly what is being worked with
d <- data.frame(
source = rep("bow",10),
target = rep("eye",10)
)
d
#> source target
#> 1 bow eye
#> 2 bow eye
#> 3 bow eye
#> 4 bow eye
#> 5 bow eye
#> 6 bow eye
#> 7 bow eye
#> 8 bow eye
#> 9 bow eye
#> 10 bow eye
as.data.frame(t(d))
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#> source bow bow bow bow bow bow bow bow bow bow
#> target eye eye eye eye eye eye eye eye eye eye
Created on 2023-06-15 with reprex v2.0.2
For more complicated cases there is {tidyr}
with pivot_longer()
and pivot_wider()
. For a quick and dirty, I prefer this.
This topic was automatically closed 42 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.