【问题标题】:How to use pivot wider?如何使用更宽的枢轴?
【发布时间】:2021-10-25 22:59:22
【问题描述】:

我目前正在尝试pivot_wider,但遇到了一些麻烦。我之前做过pivot_longer,但反过来似乎更困难。

在这张图片中,我在顶部有数据框,并希望让它看起来像底部。我会发布一些代码,但坦率地说,我还没有真正得到任何地方:/

【问题讨论】:

  • 请不要将数据发布为图片。看看如何创建great reproducible example 以了解数据的显示方式。
  • 欢迎@Gregtt。您将需要进一步澄清您在帖子中更广泛地旋转所遇到的困难。编辑您的帖子以显示您正在努力使用的代码。命名您尝试使用的函数(如果它不是来自基本 R,则命名它的包)。
  • 很可能,您的问题可能已在 StackOverflow 上的上一篇文章中得到解答。例如,有很多关于reshapetidyr::spreadtidyr::pivot_wider 的帖子,以及网络上的教程材料。我建议先尝试教程示例,然后查看最相关的 SO 帖子。如果您仍然遇到问题,请编辑您的帖子以澄清问题所在。
  • pivot_wider() 需要一组唯一标识每个观察的列。您的观察结果不是唯一的,因此 id_cols 默认为所有列。

标签: r dataframe reshape tidyr


【解决方案1】:

我不确定这是否是您的想法,但我猜您想要的输出有问题。那里可能缺少一行:

library(dplyr)
library(tidyr)

df %>%
  group_by(ID) %>%
  mutate(id = row_number()) %>%
  pivot_wider(names_from = ID, 
              values_from = c(Time, Identifier, Box),
              names_glue = "{.value}{ID}")

# A tibble: 3 x 10
     id Time1 Time2 Time3 Identifier1 Identifier2 Identifier3  Box1  Box2  Box3
  <int> <dbl> <dbl> <dbl> <chr>       <chr>       <chr>       <dbl> <dbl> <dbl>
1     1    25    32    25 A22         A22         B23           123   123   123
2     2    27    23    27 A22         A22         B23           124   124   124
3     3    26    26    19 A22         A22         B23           125   125   125

【讨论】:

  • Bravo Anoushiravan。我认为主要线索是id 列?!
  • 是的,我想是的。但不确定输出是否是操作想要的。
【解决方案2】:

pivot_wider() 需要一组唯一标识每个观察的列。您的观察结果不是唯一的,因此 id_cols 默认为所有列。

您需要为每个观察创建唯一标识。 由于您想要的结果的屏幕截图不完整,希望这次尝试能够达到您的目标。

df <- data.frame(ID = c(1, 1, 1, 2, 2, 2, 3, 3, 3), 
                 Time = c(25,27, 26, 32, 23, 26, 25, 27, 19), 
                 Identifier = c(rep('A22', 6), rep('B23', 3)), 
                 Box = c(123,124,125, 123,124,125, 123,124,125))

library(tidyverse)

dfWide <- df %>% 
  unite(idTime, ID, Time, sep = '_', remove = F) %>% 
  pivot_wider(names_from = ID,
              values_from = Identifier:Box) 

【讨论】:

  • 非常感谢您提供示例数据:)
猜你喜欢
  • 1970-01-01
  • 2021-12-12
  • 2021-10-10
  • 1970-01-01
  • 2020-01-16
  • 2016-03-06
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多