[R] stdev error

Jeff Reichman re|chm@nj @end|ng |rom @bcg|ob@|@net
Fri Mar 11 16:43:49 CET 2022


Rui

I don't have the data with med. But I did try using the mtcars dataset you used

mtcars %>%
  mutate(hp = round(hp * 2) / 2) %>%
  group_by(gear, carb) %>%
  summarise(count = n(), mean_hp = mean(hp), stdev_hp = sd(hp))

which resulted in 

# A tibble: 11 x 5
# Groups:   gear [3]
    gear  carb count mean_hp stdev_hp
   <dbl> <dbl> <int>   <dbl>    <dbl>
 1     3     1     3   104       6.56
 2     3     2     4   162.     14.4 
 3     3     3     3   180       0   
 4     3     4     5   228      17.9 
 5     4     1     4    72.5    13.7 
 6     4     2     4    79.5    26.9 
 7     4     4     4   116.      7.51
 8     5     2     2   102      15.6 
 9     5     4     1   264      NA   
10     5     6     1   175      NA   
11     5     8     1   335      NA

So maybe there is something odd with my dataset. Because the mtcars dataset code ran just fine. Where count == 1 sd returned NA. Which is what I was expecting originally


-----Original Message-----
From: Rui Barradas <ruipbarradas using sapo.pt> 
Sent: Friday, March 11, 2022 9:24 AM
To: reichmanj using sbcglobal.net; r-help using r-project.org
Subject: Re: [R] stdev error

Hello,

I cannot reproduce this error with a built-in data set.
Can you post str(my_tbl)?


suppressPackageStartupMessages(library(dplyr))

mtcars %>%
   mutate(hp = round(hp * 2) / 2) %>%
   group_by(cyl, hp) %>%
   summarise(
     count = n(),
     hp = mean(hp),
     stdev = sd(hp)
   )
#> `summarise()` has grouped output by 'cyl'. You can override using the `.groups` #> argument.
#> # A tibble: 23 x 4
#> # Groups:   cyl [3]
#>      cyl    hp count stdev
#>    <dbl> <dbl> <int> <dbl>
#>  1     4    52     1    NA
#>  2     4    62     1    NA
#>  3     4    65     1    NA
#>  4     4    66     2    NA
#>  5     4    91     1    NA
#>  6     4    93     1    NA
#>  7     4    95     1    NA
#>  8     4    97     1    NA
#>  9     4   109     1    NA
#> 10     4   113     1    NA
#> # ... with 13 more rows

Hope this helps,

Rui Barradas


Às 14:14 de 11/03/2022, Jeff Reichman escreveu:
> r-help forum
> 
>   
> 
> When I run the following code
> 
>   
> 
> my_tbl %>%
> 
>    mutate(Bse_bwt = round(Bse_bwt * 2) / 2) %>%
> 
>    group_by(Cat, Bse_bwt) %>%
> 
>    summarize(count = n(), Bse_ftv = mean(Bse_ftv), stdev = 
> sd(Bse_ftv))
> 
>   
> 
> I get the following error:
> 
>   
> 
> Error: `stdev` refers to a variable created earlier in this summarise().
> 
> Do you need an extra mutate() step?
> 
>   
> 
> I suspect it is because the standard deviation of a length-one vector 
> is NA and R is errorerrors out on the standard deviation  of 1. So 
> then I tried
> 
>   
> 
> summarize(count = n(), Bse_ftv = mean(Bse_ftv), stdev = if(n()>1)
> sd(Bse_ftv) else 0) and this didn't seem to work either. So there has 
> to be a way to add some sort of error checker to my standard deviation 
> function to check if n > 1 and then take the standard deviation in dplyr.
> 
>   
> 
> Jeff
> 
>   
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see 
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list