跨多个列的 Pivot_wider

Chr*_*ann 2 r dplyr

我有一系列 s 中Subjects提到的评级的此类数据:AnnotationTrial

\n
df <- structure(list(Subject = c("A", "A", "A", "B", "B", "B"), \n                     Annotation = c("f", "n", "n", "f", "n", "f"), \n                     Trial = c(1L, 2L, 3L, 1L, 2L, 3L),\n                     ID = c(1L, 2L, 3L, 1L, 2L, 3L),\n                     Trial_time = c("00:00:00.001", \n                      "00:00:00.002", "00:00:00.003", "00:00:00.001", \n                      "00:00:00.002", "00:00:00.003")), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))\n
Run Code Online (Sandbox Code Playgroud)\n

我想pivot_wider同时Trial保留每个 的所有Subject关联列。我所能做的就是这样,它会丢失列IDTrial_time

\n
library(dplyr)\ndf %>%\n  pivot_wider(Trial, \n              names_from = c(Subject), \n              names_glue = "{Subject}_{.value}",\n              values_from = Annotation)\n# A tibble: 3 \xc3\x97 3\n  Trial A_Annotation B_Annotation\n  <int> <chr>        <chr>       \n1     1 f            f           \n2     2 n            n           \n3     3 n            f  \n
Run Code Online (Sandbox Code Playgroud)\n

我怎样才能pivot_wider获得这个结果:

\n
  Trial A_Annotation B_Annotation  A_Trial  B_Trial  A_ID   B_ID    \n1     1 f            f             1        1        1      1\n2     2 n            n             2        2        2      2\n3     3 n            f             3        3        3      3\n
Run Code Online (Sandbox Code Playgroud)\n

Maë*_*aël 5

添加其他变量values_from

\n
library(tidyr)\ndf %>% \n  pivot_wider(id_cols = Trial, names_from = Subject, names_glue = "{Subject}_{.value}", \n              values_from = c(Annotation, Trial_time, ID))\n\n# A tibble: 3 \xc3\x97 7\n  Trial A_Annotation B_Annotation A_Trial_time B_Trial_time  A_ID  B_ID\n  <int> <chr>        <chr>        <chr>        <chr>        <int> <int>\n1     1 f            f            00:00:00.001 00:00:00.001     1     1\n2     2 n            n            00:00:00.002 00:00:00.002     2     2\n3     3 n            f            00:00:00.003 00:00:00.003     3     3\n
Run Code Online (Sandbox Code Playgroud)\n

数据

\n
df <- structure(list(Subject = c("A", "A", "A", "B", "B", "B"), \n                     Annotation = c("f", "n", "n", "f", "n", "f"), \n                     Trial = c(1L, 2L, 3L, 1L, 2L, 3L),\n                     ID = c(1L, 2L, 3L, 1L, 2L, 3L),\n                     Trial_time = c("00:00:00.001", \n                                    "00:00:00.002", "00:00:00.003", "00:00:00.001", \n                                    "00:00:00.002", "00:00:00.003")), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))\n
Run Code Online (Sandbox Code Playgroud)\n