Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Reshape seleted columns based in a factor levels

In my bands_F data.frame:

# Open band file
bands_F <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/bands.csv")
str(bands_F)
# 'data.frame': 2432 obs. of  10 variables:
#  $ STAND  : chr  "MA02ABOB7D" "MA02ABOB7D" "MA02ABOB7D" "MA02ABOB7D" ...
#  $ COMPANY: chr  "KLABIN" "KLABIN" "KLABIN" "KLABIN" ...
#  $ SPACING: chr  "3.3x1.8" "3.3x1.8" "3.3x1.8" "3.3x1.8" ...
#  $ SPECIES: chr  "EUCALYPTUS" "EUCALYPTUS" "EUCALYPTUS" "EUCALYPTUS" ...
#  $ AGE    : int  1 1 1 1 1 1 1 1 1 1 ...
#  $ STATS  : chr  "MEAN" "SD" "MIN" "MAX" ...
#  $ B2     : num  242.6 84.5 102 534 184.3 ...
#  $ B3     : num  359 138 115 867 332 ...
#  $ B4     : num  299 159 87 886 278 ...
#  $ B8     : num  2678 872 901 4721 2695 ...,

I’d like to create new columns for each STATS level ("MEAN","SD","MIN","MAX") and my desirable output is:

#  $ STAND  : chr  "MA02ABOB7D" "MA02ABOB7D" "MA02ABOB7D" "MA02ABOB7D" ...
#  $ COMPANY: chr  "KLABIN" "KLABIN" "KLABIN" "KLABIN" ...
#  $ SPACING: chr  "3.3x1.8" "3.3x1.8" "3.3x1.8" "3.3x1.8" ...
#  $ SPECIES: chr  "EUCALYPTUS" "EUCALYPTUS" "EUCALYPTUS" "EUCALYPTUS" ...
#  $ AGE    : int  1 1 1 1 1 1 1 1 1 1 ...
#  $ B2_MEAN     : num  242.6 ...
#  $ B3_MEAN     : num  359  ...
#  $ B4_MEAN     : num  299  ...
#  $ B8_MEAN     : num  2678  ...
# ...
#  $ B2_MAX     : num   534  ...
#  $ B3_MAX     : num   867  ...
#  $ B4_MAX    : num    886  ...
#  $ B8_MAX     : num   4721  ...

Please, any help it?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

We may use pivot_wider after creating a sequence column

library(dplyr)
library(tidyr)
library(data.table)
bands_F %>% 
   mutate(rn = rowid(STATS)) %>%
   pivot_wider(names_from = STATS, values_from = c(B2, B3, B4, B8)) %>%
   select(-rn)

-output

# A tibble: 608 × 21
   STAND  COMPANY SPACING SPECIES   AGE B2_MEAN B2_SD B2_MIN B2_MAX B3_MEAN B3_SD B3_MIN B3_MAX B4_MEAN B4_SD B4_MIN B4_MAX B8_MEAN B8_SD
   <chr>  <chr>   <chr>   <chr>   <int>   <dbl> <dbl>  <dbl>  <dbl>   <dbl> <dbl>  <dbl>  <dbl>   <dbl> <dbl>  <dbl>  <dbl>   <dbl> <dbl>
 1 MA02A… KLABIN  3.3x1.8 EUCALY…     1   243.   84.5    102    534    359. 138.     115    867    299. 159.      87    886   2678.  872.
 2 MA02A… KLABIN  3.3x1.8 EUCALY…     1   184.   85.2     48    462    332. 147.      77    824    278. 167.      56    934   2695.  881.
 3 MA02A… KLABIN  3.3x1.8 EUCALY…     1   256.   80.8    104    538    384. 131.     144    903    324. 153.     118    914   2546.  734.
 4 MA02A… KLABIN  3.85x1… EUCALY…     1   142.   38.4     75    543    267.  58.1    136    765    151.  79.1     75   1006   3636.  764.
 5 MA02A… KLABIN  3.85x1… EUCALY…     1    99.4  38.9     31    452    236.  57.2    111    678    138.  74.9     65    871   3858.  875.
 6 MA02A… KLABIN  3.85x1… EUCALY…     1   111.   35.4     30    382    234.  52.9    106    606    144.  61.4     56    686   3654.  861.
 7 MA02A… KLABIN  3.85x1… EUCALY…     1    78.2  35.8      1    336    196.  48.0     50    519    128.  62.4     33    613   3531.  820.
 8 MA02A… KLABIN  3.85x1… EUCALY…     1   133.   44.6     58    388    246.  58.0    109    585    179.  97.1     74    807   3460.  887.
 9 MA02A… KLABIN  3.85x1… EUCALY…     1   179.   44.1     94    439    286.  55.6    154    656    218.  97.6    106    905   3338.  832.
10 MA02A… KLABIN  3.85x1… EUCALY…     1   163.   51.7     65    453    338.  64.3    190    761    302. 109.     152   1052   3111.  685.
# … with 598 more rows, and 2 more variables: B8_MIN <dbl>, B8_MAX <dbl>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading