【问题标题】:reshaping a data frame duplicating IDs [duplicate]重塑重复ID的数据框[重复]
【发布时间】:2016-11-17 14:45:07
【问题描述】:

这是我的数据框:

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

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

【问题讨论】:

  • reshape(df, dir = 'long', sep = '', varying = -1)[, c('ID','A','B')]

标签: r dataframe reshape2 tidyr


【解决方案1】:

我们可以使用 data.table 中的 melt 来将多个 measure patterns 从“宽”格式转换为“长”格式。

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

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 2014-11-09
    • 2012-10-01
    • 2014-01-31
    • 1970-01-01
    • 2018-07-15
    相关资源
    最近更新 更多