将数据框的列转换为R中的行

问题描述 投票:0回答:1

我具有以下可用于分析的数据框。

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  

有人可以引导我使用相关资源或对此提供帮助吗?

r dataframe data-conversion
1个回答
0
投票
使用pivot_longerpivot_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>)
© www.soinside.com 2019 - 2024. All rights reserved.