如何在R中将单个测量合并为多个测量的 Dataframe

5ssjco0h  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(149)

对于变量BP 1和BP 2,我有一个每个ID在不同时间点进行多次测量的长 Dataframe 。

ID <- c(1,1,1,2,2,2,3,3,4)
Time <- c(56,57,58,61,62,64,66,67,72)
BP1 <- c(70,73,73,74,75,76,74,74,70)
BP2 <- c(122,122,123,126,124,121,130,132,140)
df1 <- data.frame(ID, Time, BP1, BP2)

我想合并另一个 Dataframe (df 2),它包含每个ID的BP 1和BP 2的单个测量值。

ID <- c(1,2,3,4)
Time <- c(55, 60, 65, 70)
BP1 <- c(70, 72, 73, 74)
BP2 <- c(120, 124, 130, 134)
df2 <- data.frame(ID, Time, BP1, BP2)

如何合并这些 Dataframe ,使Time变量按顺序排列, Dataframe 如下所示:

任何帮助不胜感激,谢谢!

j8yoct9x

j8yoct9x1#

在base R中,使用rbind()进行合并,使用order()进行排序,然后清除行名称:

df3 <- rbind(df1, df2)
df3 <- df3[order(df3$ID, df3$Time), ]
rownames(df3) <- seq(nrow(df3))

df3

或者,使用dplyr:

library(dplyr)

bind_rows(df1, df2) %>%
  arrange(ID, Time)

任一方法的结果:

ID Time BP1 BP2
1   1   55  70 120
2   1   56  70 122
3   1   57  73 122
4   1   58  73 123
5   2   60  72 124
6   2   61  74 126
7   2   62  75 124
8   2   64  76 121
9   3   65  73 130
10  3   66  74 130
11  3   67  74 132
12  4   70  74 134
13  4   72  70 140

相关问题