R中所有列按组的相同操作(除法)

Same operation (division) by groups for all columns in R

我有一个像 Christmas:

这样的数据集
Christmas <- data_frame(month = c("1", "1", "2", "2"), 
                 NP = c(2, 3, 3, 1),
                 ND = c(4, 2, 0, 6),
                 NO = c(1, 5, 2, 4),
                 variable = c("mean", "sd", "mean", "sd"))

我想按月计算每列的 t 统计量。 我要使用的 t 统计量的公式是 t 统计量 = mean/sd。 (注意:我想计算所有(在本例中,它们只是 NP、ND 和 NO)列)。

新数据集看起来像 t_statistics:

t_statistic <- data_frame(
  month = c("1", "2"), 
  NP = c(2/3, 3),
  ND = c(4/2, 0),
  NO = c(1/5, 2/4)
  )

有线索吗?

如果我们已经创建了 mean/sd 个值,那么它只是 first 个元素除以 last(因为每组只有两行)

library(dplyr)
out <- Christmas %>% 
    group_by(month) %>% 
    summarise(across(NP:NO,  ~first(.)/last(.)))

-输出

out
# A tibble: 2 × 4
  month    NP    ND    NO
  <chr> <dbl> <dbl> <dbl>
1 1     0.667     2   0.2
2 2     3         0   0.5

-检查 OP 的输出

> identical(t_statistic, out)
[1] TRUE

或者如果 mean/sd 未排序

Christmas %>%
   arrange(month, variable) %>%
   group_by(month) %>%
   summarise(across(NP:NO,  ~first(.)/last(.)))