我具有以下可用于分析的数据框。
Sname sid st.sn.s1 st.sn.s2 st.sn.s3 st.sn.s1 st.sn.s2 st.sn.s3
a 12 22 23 24 31 32 33
我想将其转换为类似于下面的内容。
Sname sid st.sn.s1 st.sn.s2 st.sn.s3
a 12 22 23 24
a 12 31 32 33
有人可以引导我使用相关资源或对此提供帮助吗?
pivot_longer
和pivot_wider
功能(https://tidyr.tidyverse.org/reference/pivot_longer.html),您可以做:library(tidyr)
library(dplyr)
df %>% pivot_longer(-c(Sname,sid), names_to = "var",values_to = "val") %>%
pivot_wider(names_from = var, values_from = val) %>%
dplyr::select(-.copy)
# A tibble: 2 x 5
Sname sid st.sn.s1 st.sn.s2 st.sn.s3
<chr> <int> <int> <int> <int>
1 a 12 22 23 24
2 a 12 31 32 33
可复制的示例
structure(list(Sname = "a", sid = 12L, st.sn.s1 = 22L, st.sn.s2 = 23L, st.sn.s3 = 24L, st.sn.s1 = 31L, st.sn.s2 = 32L, st.sn.s3 = 33L), row.names = c(NA, -1L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x5635c38695c0>)