我想将我的数据框从按列转换为按行
structure(list(ID = 1:2, Age = c(45L, 60L), SGLT_v1_0_3 = 1:0,
SGLT_time_0_3 = c(92L, 92L), SGLT_v1_3_6 = 0:1, SGLT_time_3_6 = c(183L,
183L), SGLT_v1_6_9 = 1:0, SGLT_time_6_9 = c(285L, 285L)), class = "data.frame", row.names = c(NA,
-2L))
ID Age SGLT_v1_0_3 SGLT_time_0_3 SGLT_v1_3_6
1 1 45 1 92 0
2 2 60 0 92 1
SGLT_time_3_6 SGLT_v1_6_9 SGLT_time_6_9
1 183 1 285
2 183 0 285
Run Code Online (Sandbox Code Playgroud)
我希望数据框看起来像:
ID Age SGLT_time SGLT_v1
1 1 45 92 1
2 2 60 92 0
3 1 45 183 0
4 2 60 183 1
5 1 45 285 1
6 2 60 285 0
Run Code Online (Sandbox Code Playgroud)
我尝试了pivot_longer,但似乎无法得到正确的结果,因为它没有提供正确的数据。我试图对我的数据帧执行时变分析,但在进行任何分析之前需要数据采用行格式。感谢任何帮助
小智 5
您可以使用pivot_longer()。
library(tidyr)
df |>
pivot_longer(
contains("SGLT_"),
names_to = ".value",
names_pattern = "(SGLT_time|SGLT_v1)"
)
Run Code Online (Sandbox Code Playgroud)
输出
ID Age SGLT_v1 SGLT_time
<int> <int> <int> <int>
1 1 45 1 92
2 1 45 0 183
3 1 45 1 285
4 2 60 0 92
5 2 60 1 183
6 2 60 0 285
Run Code Online (Sandbox Code Playgroud)
数据
structure(list(ID = 1:2, Age = c(45L, 60L), SGLT_v1_0_3 = 1:0,
SGLT_time_0_3 = c(92L, 92L), SGLT_v1_3_6 = 0:1, SGLT_time_3_6 = c(183L,
183L), SGLT_v1_6_9 = 1:0, SGLT_time_6_9 = c(285L, 285L)), class = "data.frame", row.names = c(NA,
-2L))
Run Code Online (Sandbox Code Playgroud)