【发布时间】:2021-10-27 15:03:56
【问题描述】:
我需要将包含每个汇总统计数据的列和每个组/访问组合的行的长格式表转换为一个紧凑的表,其中每个组的行和每次访问的列。以照片为例。
【问题讨论】:
我需要将包含每个汇总统计数据的列和每个组/访问组合的行的长格式表转换为一个紧凑的表,其中每个组的行和每次访问的列。以照片为例。
【问题讨论】:
基本 R 选项可能会有所帮助
reshape(
transform(
df,
Day = sprintf("%s±%s(n=%s)", mean, round(SE, 2), n)
)[c("Visit", "Group", "Day")],
direction = "wide",
idvar = "Group",
timevar = "Visit"
)
【讨论】:
你可以使用:
library(tidyr)
library(dplyr)
df %>%
mutate(value = paste0(mean, " ± ", round(SE, 2), " (n = ", n, ")")) %>%
pivot_wider(id_cols = Group,
names_from = Visit,
names_prefix = "Day_",
values_from = value)
返回
Group Day_1 Day_2 Day_3
<chr> <chr> <chr> <chr>
1 A 27 ± 0.33 (n = 100) 22 ± 0.81 (n = 100) 21 ± 0.79 (n = 100)
2 B 29 ± 0.82 (n = 100) 23 ± 0.93 (n = 100) 20 ± 0.96 (n = 100)
3 C 24 ± 0.37 (n = 100) 26 ± 0.24 (n = 100) 25 ± 0.1 (n = 100)
df <- structure(list(Visit = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L),
Group = c("A", "B", "C", "A", "B", "C", "A", "B", "C"), mean = c(27L,
29L, 24L, 22L, 23L, 26L, 21L, 20L, 25L), SE = c(0.332081410568208,
0.818319256883115, 0.371742388699204, 0.809606711380184,
0.931074212538078, 0.244411387946457, 0.79078992898576, 0.955696877092123,
0.0983989259693772), n = c(100, 100, 100, 100, 100, 100,
100, 100, 100)), class = "data.frame", row.names = c(NA,
-9L))
【讨论】: