reshape库提供了两个函数,用于数据框的折叠和展开。
什么叫折叠和展开呢,就是说数据是以列的形式还是行的形式存在。比如一个成绩数据,有两种形式:
形式A:
学号 | 学科 | 成绩 |
1 | 语文 | 98 |
1 | 数学 | 77 |
1 | 英语 | 89 |
2 | 语文 | 96 |
2 | 数学 | 35 |
2 | 英语 | 66 |
3 | 语文 | 67 |
形式B:
语文 | 数学 | 英语 | |
1 | 98 | 77 | 89 |
2 | 96 | 35 | 66 |
melt函数用于从形式B转换为形式A。
cast函数用于从形式A转换为形式B。
例子:
现在有一个数据框,是以形式B保存的数据:
X和Y共同组成主键,数据以列的形式放在三列数据区内。
用melt函数,并指定主键,
predictions <- melt(df, id.vars = c('X', 'Y'))
得到的结果就是把列名也放到数据区的形式A。
相反得,用cast函数得到一个逆操作。
df2 <-cast(predictions,X+Y~variable,value="value")
结果可能和df之前的数据顺序不一样,但内容是一样的。