看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 我的Data是電影的評比資料,有兩千萬筆, 其中電影的類別(genres)是屬於多重標籤, 為了分析各種類別的電影評分狀況, 我打算將所有電影建立Dummy Variable, 每一筆評比資料會根據他電影的標籤,在每個類別底下有 T/F boolean值。 資料像是這樣 movieId title genres Adventure Romance "1" "Toy Story (1995)" "Adventure|Animation|Children|... "Truth" "False" .................... Rating .................... 4.5 目前我已經成功將所有類別全切出來,用的code如下 Genres <- unique(unlist(as.character(movies[,3]) %>% strsplit(split='[|]'))) 接著我創造出空的Dummy for(i in c(1:20)){ y=i+3 merge <- insertCol(as.matrix(merge),y,v=NA,cName=Genres[i]) } 接著我試著用lapply或sapply,想將boolean值根據merge[,3]比對填入, 使用的code如下: for(i in c(1:20)){ y=i+3 merge[,y] <- sapply(merge[,3],grepl(Genres[i],merge[,3])) } 但問題來了,他一直跟我說grepl並不是function, 嘗試過各種apply家族或是自定義的函數一樣有問題, 不曉得是哪裡出了問題? 另外我知道這方法本身很土法,好像有更好的產生Dummy的方式, 不過我還看不懂XD,所以想說先用這種直觀的方式練習一些packages, 再麻煩各位幫我解惑一下感謝。 [環境敘述]: R version 3.3.3 (2017-03-06) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows >= 8 x64 (build 9200) [關鍵字]: lapply sapply dummy -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.236.39 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1489732720.A.401.html
locka: 試試看sapply(m[,3], function()grepl(G[i],m[,3]))? 03/17 19:20
Steven87: 樓上無法耶,另外自定義funcion不用加{}嗎? 03/17 21:32
locka: sorry 少打x… function(x)。 一行可用{}可不用 03/17 21:56
Wush978: 我沒很仔細看,所以可能答錯。如果是genres這欄,我以前 03/19 10:07
Wush978: 認為是R不容易轉換成一般dummy variable的資料格式,所以 03/19 10:07
Wush978: 寫了一個套件: FeatureHashing來轉。缺點是轉出來的矩陣 03/19 10:08
Wush978: 是稀疏矩陣(不確定你會不會用),column index是hash後 03/19 10:08
Wush978: 的 03/19 10:08
Wush978: 如果你是後續要做ML,可以用。一般分析的話,就不太好用 03/19 10:08
Steven87: 感謝各位回答,後來發現grepl比對不需要使用sapply 03/22 15:11