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(.)))
我有一个像 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(.)))