我有一个数据框,其中包含有关会话编号的一长串顺序操作。我想将给定会话和 user_id 中的所有顺序操作串联在一行中。假设我有:
DF:
user_id session action
1000 1 A
1000 1 B
1000 1 C
1000 2 A
1000 2 B
1001 1 A
1001 1 D
1001 2 B
1001 3 C
1002 1 B
1002 1 D
1002 1 D
我想转换成这种格式:
new_DF:
user_id session action1 action2 action3
1000 1 A B C
1000 2 A B NA
1001 1 A D NA
1001 2 B NA NA
1001 3 C NA NA
1002 1 B D D
new_DF 中的列数等于单个会话中的最大操作数。那些操作较少的用户会收到NA
会话中的无效操作。
我怎样才能在 R 中做到这一点?
我们可以使用dcast
从data.table
library(data.table)
dcast(setDT(DF), user_id + session ~
paste0("action", rowid(user_id, session)), value.var = "action")
# user_id session action1 action2 action3
#1: 1000 1 A B C
#2: 1000 2 A B NA
#3: 1001 1 A D NA
#4: 1001 2 B NA NA
#5: 1001 3 C NA NA
#6: 1002 1 B D D
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句