【发布时间】:2016-02-06 11:51:57
【问题描述】:
从使用
导入的数据开始dati<- ( read.csv(file='C:...csv', header=TRUE, sep=";"))
我选择了两个变量
id<-dati$post_visid_low
item<-dati$event_list
比
id<-as.character(id)
item<-as.character(item)
dataT <- data.table(id, item)
dataT的结构是
id item
1 102, 104, 108,401
2 405, 103, 650, 555, 450
3 305, 109
我想获得这个带有有序列的频率矩阵
id 102 103 104 108 109 305 401 405 450 555 650
1 1 1 1
2 1 1 1 1
3 1 1
我该怎么做? 我试过了
library(Matrix)
id<-as.character(id)
item<-as.character(item)
dataT <- data.table(id, item)
lst <- strsplit(dataT$item, '\\s*,\\s*')
Un1 <- sort(unique(unlist(lst)))
sM <- sparseMatrix(rep(dataT$id, length(lst)),
match(unlist(lst), Un1), x= 1,
dimnames=list(dataT$id, Un1))
但我收到此错误
Error in i + (!(m.i || i1)) : non-numeric argument to binary operator
我该怎么做?
【问题讨论】:
-
扩展你的拆分项目的方法,你可以做
idx <- with(d, sort(unique(as.numeric(unlist(strsplit(item, ",")))))); s <- sapply(idx, function(x) grepl(x, d$item)) + 0L ; colnames(s) <- idx[这是nice,因为它几乎使用了每个函数基R]
标签: r