我有以下数据集:
ID IntNo Conv Path
743479 4 0 homepage
743479 3 0 page1
743479 2 0 page2
743479 1 0 page3
743479 0 1 page4
746523 2 0 homepage
746523 1 0 page3
746523 0 1 page4
1225709 1 0 homepage
1225709 0 1 page4
我想得到这样的输出:
Path Conv
homepage>page1>page2>page3>page4 1
homepage>page3>page4 1
homepage>page4 1
为此,我使用了以下代码:
users_path <- lapply(unique(datset$ID),
function(x) list( path= paste(dataset[dataset$ID==x,'Path'], sep="", collapse=">"),
total_conversions= length( datset[dataset$ID==x,'Path']) ) )
users_path<-do.call('rbind', users_path)
users_path<-data.frame(users_path)
但我得到的输出如下:
Path Total_conversions
Path 1
Path 1
Path 1
你能帮我识别错误吗?
答案 0 :(得分:1)
如果您的数据在data.table中,则会执行以下操作:
library(data.table)
dt <- as.data.table(df)
dt[, list(Path = paste(Path, sep="", collapse=">")), by = ID][, list(Total_conversions = .N), by = Path]
答案 1 :(得分:-2)
对不起,
代码是对的。我把表读作data.table。
dataset<-data.frame(dataset)
将其转换为数据帧后,我的功能运行良好。
users_path <- lapply(unique(datset$ID),
function(x) list( path= paste(dataset[dataset$ID==x,'Path'], sep="", collapse=">"),
total_conversions= length( datset[dataset$ID==x,'Path']) ) )
users_path<-do.call('rbind', users_path)
提供帮助