2016-02-12 192 views
1

我有一個數據框包含一列/向量列表 - 此列中的每個單元格都包含|分隔號碼。稀疏矩陣的向量列表

> dput(test) 
structure(list(classes = c("30136|10263|10304|10207|10148|10319|10109|10306|10281|10187|10181|10046|10255|10018", 
"10271|10306|10019|10073|10319|10112|10156|10069|10218|10011|10175|10039|10015|10304", 
"10191|10286|10257", "10178|10325", "10156|10304|10294|10009", 
"10124|10271|10306|10019|10319|10112|10156|10011|10039|10304|10272|10250|10109|10150|10163" 
), fullurl = c("www.lonny.com/Gigi%20Hadid's%20Parents%20Are%20Selling%20Their%20Malibu%20Mansion?utm_campaign=Yaho-LN-US-Desktop-Specials-Gigi-Hadids-Parents-Are-Selli&utm_medium=cpc&utm_source=yaho", 
"www.msn.com/?ocid=UE01DHP&pc=EUPP_UE01", "www.mybodygallery.com/photos-2576-body-shape.htm", 
"news.abs-cbn.com/entertainment", "runt-of-the-web.com/savage-reddit-roasts", 
"www.msn.com/en-us?cobrand=hp13.msn.com&ocid=HPCDHP&pc=HPDTDFJS" 
)), .Names = c("classes", "fullurl"), row.names = c(17L, 40L, 
49L, 50L, 52L, 60L), class = "data.frame") 

我需要將其轉換成一個稀疏矩陣或「延伸」的數據幀, 使得對於在數據的每個可能的類 - 專用的列將是含有0/1根據本如果該類分配給這個網址。 任何建議表示讚賞。 我以爲使用

do.call(rbind, strsplit(as.character(test$classes), "|", fixed=T)) 

但這並沒有做的工作。

+0

您能不能告訴基於此輸入預期的輸出? – Heroka

回答

1

我們可以嘗試

library(qdapTools) 
d1 <- mtabulate(setNames(strsplit(as.character(test$classes), "|", 
       fixed=T), test$fullurl)) 
+0

太棒了!雖然我收到警告:警告消息: 在data.row.names(row.names,rowsi,i)中: 某些row.names重複:17,19,40,並且在結果中看不到行名稱(url路徑)。 – Neuril

0
classes <- unique(unlist(strsplit(test$classes, "|", fixed = TRUE))) 
sapply(classes, grepl, test$classes) * 1