我正在使用一个看起来像这样的数据集。我正在尝试使用pivot_longer和dplyr来获取各自列下的平均值和sd,这样我可以做一些绘图,但我似乎无法让它正常工作。有人可以给我一些建议吗?
日 | 平均深度 | 深度_sd | 平均温度 | temp_sd |
---|---|---|---|---|
2021-01-01 | 20.5 | 5.2 | 15.8 | 3.8 |
2021-01-02 | 15.5 | 3.9 | 15.6 | 2.2 |
我希望最终得到一个看起来像这样的桌子:
日 | 变量 | 意思是 | SD |
---|---|---|---|
2021-01-01 | 深度 | 20.5 | 5.2 |
2021-01-01 | 温度 | 15.8 | 3.8 |
2021-01-02 | 深度 | 15.5 | 3.9 |
2021-01-02 | 温度 | 15.6 | 2.2 |
如果您清理列名,使变量位于最前面或总是最后,这会更容易。例如
library(dplyr)
library(tidyr)
dd %>%
rename_with(.cols=starts_with("mean"), function(x) gsub("([^_]*)_(.*)", "\\2_\\1", x)) %>%
pivot_longer(-day, names_pattern="(.*)_(.*)", names_to=c("variable", ".value"))
这回来了
day variable mean sd
<chr> <chr> <dbl> <dbl>
1 2021-01-01 depth 20.5 5.2
2 2021-01-01 temp 15.8 3.8
3 2021-01-02 depth 15.5 3.9
4 2021-01-02 temp 15.6 2.2