如何使用pivot_longer将R中的多个列与dplyr组合

问题描述 投票:0回答:1

我正在使用一个看起来像这样的数据集。我正在尝试使用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
r dplyr pivot
1个回答
0
投票

如果您清理列名,使变量位于最前面或总是最后,这会更容易。例如

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
© www.soinside.com 2019 - 2024. All rights reserved.