按扇区计算 R 中的标准偏差

compute standard deviation in R by sector

我是 R 的新手,如果这个问题已经得到解答,我很抱歉。 这是我的数据集的示例:

idnumber SIC(1-digit) Year   Ebit
198       A           2019   2344
196       A           2019   6383
374       A           2019   5628
281       A           2019   2672
274       A           2018   2792
196       A           2018   3802
374       A           2018   3892
468       B           2019   6372
389       B           2019   3829
493       C           2019   2718
928       C           2019   2628
278       C           2019   3672

我想计算工业部门“SIC(一位数)”的“息税前利润”的标准差。 通过这种方式,我想找到按行业划分的营业收入“息税前利润”的波动性度量。

在此先感谢您的热心回答..

让我们加载您的数据以重现您的示例:

dat <- data.frame(
  idnumber = c(198, 196, 374, 281, 274, 196, 374, 468, 389, 493, 928, 278),
  `SIC(1-digit)` =  c('A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
  Year = c(2019, 2019, 2019, 2019, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019),
  Ebit = c(2344, 6383, 5628, 2672, 2792, 3802, 3892, 6372, 3829, 2718, 2628, 3672),
  check.names = FALSE
)

您看到 SIC(1-digit) 被反引号和参数 check.names = FALSE 包围。这是因为你的列名有特殊字符();你可以阅读更多关于这个 here and


加载数据后,您可以使用 dplyr:

library(dplyr)

dat %>% 
  group_by(`SIC(1-digit)`) %>%
  summarise(standard_deviation = sd(Ebit))


# A tibble: 3 x 2
  `SIC(1-digit)` standard_deviation
* <chr>                       <dbl>
1 A                           1544.
2 B                           1798.
3 C                            579.

data.table:

library(data.table)

setDT(dat)
dat[, .(standard_deviation = sd(Ebit)), by = `SIC(1-digit)`]

  
   SIC(1-digit) standard_deviation
1:            A          1544.4116
2:            B          1798.1725
3:            C           578.5257