重塑数据框复制 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
这是我的数据框:
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