我在设置sapply
. 我确实有一个 for 循环可以完成我需要的工作,但是完成它需要很长时间。
变量名解释:
dat #raw data
df #empty data frame to preallocate memory
uniq.user #unique user id
uniq.item #unique item id
df 的列名:用户 ID、项目 ID 1、项目 ID 2、...、项目 ID n
我正在尝试创建一个二进制表,指示用户拥有哪个项目。
例子:
USERID1111 1 0 0 0 1
USERID2222 0 1 0 1 1
原始数据如下所示:
USERID1111 ITEM ID 1
USERID1111 ITEM ID 5
USERID2222 ITEM ID 2
USERID2222 ITEM ID 4
USERID2222 ITEM ID 5
我拥有的 for 循环是:
for(i in 1:length(uniq.user)){
df[i, which(uniq.item %in% dat[df[i,1]== dat[,1], 2]) + 1] <- 1
}
我将如何使用它来转换它sapply
?(或任何其他应用功能)
谢谢!
ps 如果有更好的方法来执行这个任务,请告诉我!我正在尝试学习更有效的方法在 R 中做事。