我想编写一个将数据框转换为矩阵的函数。数据框是事件列表。每行对应一个访问或购买产品的人。
my.df <- data.frame(person = c('A', 'A', 'B', 'B', 'B', 'C'),
week = c(1, 2, 1, 3, 3, 2),
event = c('visit', 'buy', 'visit', 'visit', 'buy', 'visit'))
> my.df
person week event
1 A 1 visit
2 A 2 buy
3 B 1 visit
4 B 3 visit
5 B 3 buy
6 C 2 visit
所需的输出矩阵将行作为人,将列作为周。在 (person, week) 条目中,如果有人购买,我希望有“购买”,如果没有,如果有人访问,我希望有“访问”,否则我希望有“无”作为条目。更具体地说,所需的输出是以下矩阵:
> my.mat
1 2 3
A "visit" "buy" "none"
B "visit" "none" "buy"
C "none" "none" "visit"
我的想法是我应该将事件转换为数字,使用最大值进行强制转换,然后将数字转换回事件,但我不完全确定如何将它们放在一起。