R中的数据转换

时间:2013-03-14 18:46:18

标签: r

我需要以不同的方式查看数据框中的数据。这是问题..

我有一个数据框如下

Person  Item  BuyOrSell
1        a    B
1        b    S
1        a    S
2        d    B
3        a    S
3        e    S

我需要将它转化为这种方式。显示人员对各个项目进行的所有交易的总和。

Person   a   b    d   e
1        2   1    0   0
2        0   0    1   0
3        1   0    0   1

我能够通过

实现上述目标 R

中的

table(Person,Item)

我的新要求是看数据如下。显示人员对违反交易类型(B或S)的各个项目所做的所有交易的总和

Person    aB   aS   bB   bS   dB   dS   eB   eS
1          1    1    0    1    0    0   0     0
2          0    0    0    0    1    0   0     0
3          1    0    0    0    0    0   0     1

所以我创建了一个新列并附加了Item和BuyOrSell的值。

df$newcol<-paste(Item,"-",BuyOrSell,sep="")
table(Person,newcol) 

并且能够实现上述结果。

在R中有更好的方法来进行这种转换吗?

1 个答案:

答案 0 :(得分:1)

您的方式(通过paste创建新列)可能是最简单的方法。你也可以这样做:

require(reshape2)
dcast(Person~Item+BuyOrSell,data=df,fun.aggregate=length,drop=FALSE)