重塑数据框复制 ID

reshaping a data frame duplicating IDs

这是我的数据框:

df <- data.frame(ID = c(1,2,3), A1 = c("a1","a3","a5"), 
B1 = c("b1","b3","b5"), A2 = c("a2","a4","a6"), B2 = c("b2","b4","b6"))    

我想要的结果是这样的:

  ID  A  B
1  1 a1 b1
2  1 a2 b2
3  2 a3 b3
4  2 a4 b4
5  3 a5 b5
6  3 a6 b6

我试图找到一个解决方案,但我没有运气。

我们可以使用 data.table 中的 melt,它可以使用多个 measure patterns 从 'wide' 转换为 'long' 格式。

library(data.table)
melt(setDT(df), measure = patterns("^A", "^B"), 
          value.name = c("A", "B"))[, variable := NULL][order(ID)]
#  ID  A  B
#1:  1 a1 b1
#2:  1 a2 b2
#3:  2 a3 b3
#4:  2 a4 b4
#5:  3 a5 b5
#6:  3 a6 b6