我想将下面的长数据帧(参见示例)转换为宽格式。
我的数据结构看起来像这样 |月份 | ID |发送| F | | -------- | -------------- |------|---| | 12 | 12 1 | -0.1 |1| | 12 | 12 1 | -0.1|2| | 24 | 1 | 0.1 |3| | 60| 1 | -0.45|4| | 12 | 12 2 | -0.34 |1| | 12 | 12 2 | 0.123|2| | 24 | 2 | 0.15 |3| | 12 | 12 3 | 0.4|1| | 12 | 12 3 | -0.153|2| | 24 | 3 | -0.5|3|
我的身材是这样的
pivot_wider(
df.supine,
names_from = df.supine$Month,
names_prefix="Month_",
values_from = df.supine$Tx
)
我收到以下错误:
Error in `pivot_wider()`:
! Can't subset columns past the end.
ℹ Locations 60, 96, 60, …, 60, and 96 don't exist.
ℹ There are only 30 columns.
Backtrace:
1. tidyr::pivot_wider(...)
2. tidyr:::pivot_wider.data.frame(...)
如何修复此错误?
我的猜测是,问题是,并非所有 ID 都有所有月份。
library(tidyverse)
df.supine <- tribble(
~Month, ~ID, ~Tx, ~F,
12, 1, -0.1, 1,
12, 1, -0.1, 2,
24, 1, 0.1, 3,
60, 1, -0.45, 4,
12, 2, -0.34, 1,
12, 2, 0.123, 2,
24, 2, 0.15, 3,
12, 3, 0.4, 1,
12, 3, -0.153, 2,
24, 3, -0.5, 3
)
pivot_wider(
df.supine,
names_from = "Month",
names_prefix = "Month_",
values_from = "Tx"
)
#> # A tibble: 10 × 5
#> ID F Month_12 Month_24 Month_60
#> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 1 -0.1 NA NA
#> 2 1 2 -0.1 NA NA
#> 3 1 3 NA 0.1 NA
#> 4 1 4 NA NA -0.45
#> 5 2 1 -0.34 NA NA
#> 6 2 2 0.123 NA NA
#> 7 2 3 NA 0.15 NA
#> 8 3 1 0.4 NA NA
#> 9 3 2 -0.153 NA NA
#> 10 3 3 NA -0.5 NA
创建于 2024-05-08,使用 reprex v2.1.0