Мне нужно сделать то, что действительно делает tidyr::spread()
, но для столбцов с несколькими значениями.
Если у меня есть такой набор данных:
te <- structure(list(Syllable = c("[pa]", "[ta]", "[ka]", "[pa]", "[ta]",
"[ka]", "[pa]", "[ta]", "[ka]", "[pa]"), PA = c(15.9252335141423,
2.17504491982172, 5.26727958979289, 4.48590068583509, 2.1316282072803e-13,
14.1415335887116, 3.51720477328246, 0.839953301362556, 5.74712643678048,
7.01396701583887), transient_mean = c(4.43699436235785, 4.8733556527069,
5.52844792982797, 3.63255704032305, 4.99835680315547, 5.5387775503751,
3.19517346916471, 4.40360523945946, 4.14203491258186, 3.51900453101706
), transient_sd = c(0.871280094068596, 1.51392328075964, 2.65764846931951,
1.25416942799974, 1.13391173514884, 1.75904804912773, 1.54594113209317,
1.69526308849507, 1.73693971862859, 1.31626295142865)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -10L))
, который выглядит так (для тех, кто только что читает это):
> te
# A tibble: 10 x 4
Syllable PA transient_mean transient_sd
<chr> <dbl> <dbl> <dbl>
1 [pa] 1.59e+ 1 4.44 0.871
2 [ta] 2.18e+ 0 4.87 1.51
3 [ka] 5.27e+ 0 5.53 2.66
4 [pa] 4.49e+ 0 3.63 1.25
5 [ta] 2.13e-13 5.00 1.13
6 [ka] 1.41e+ 1 5.54 1.76
7 [pa] 3.52e+ 0 3.20 1.55
8 [ta] 8.40e- 1 4.40 1.70
9 [ka] 5.75e+ 0 4.14 1.74
10 [pa] 7.01e+ 0 3.52 1.32
Я бы хотелсоздать новые столбцы из значения значений столбцов Syllable
, чтобы получить более широкую таблицу с именами столбцов "[pa] PA", "[pa] transient_mean", "[pa] _ transient_sd", [ta] _PA", "[ta] _transient_mean", .... и т. д.
Я, конечно, пробовал:
> te %>%
+ spread(Syllable,PA:transient_sd)
Error: `var` must evaluate to a single number or a column name, not an integer vector
Call `rlang::last_error()` to see a backtrace
, но я получаю жалобутогда, вероятно, из-за того, что я выбрал несколько столбцов.
Есть какие-нибудь идеи о том, как можно добиться этого спора данных?