※ 引述《locka (locka)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 請簡略描述你所要做的事情,或是這個程式的目的
: 不曉得這裡有沒有人在玩movielens的資料?
: 我從movielens 下載電影的資料 其中有一個叫做movies.dat的檔案
: movielens 10M:
: http://grouplens.org/datasets/movielens/
: 經過我整理後存成一個三個欄位的data frame 如下:
: ID Title Genres
: 1 Toy Story Adventure|Animation|Children|Comedy|Fantasy
: 2 Jumanji Adventure|Children|Fantasy
: ... ... ...
yourData
: 電影的類型總共有18種 但上述Genres欄位只會顯示該電影的類型
: 而我今天想要想要玩的是
: 針對Genres這個欄位做類似購物籃分析的事情,找出哪些電影屬性相似
: 也就是想要產生一個data frame紀錄電影類型的向量
: 例如如果某部電影是動作片則動作片欄位值為1 反之為0
: 最後想要產生的結果如下
: ID Adventure Animation Children Comedy Fantasy ......
: 1 1 1 1 1 1 ......
: 2 1 0 1 0 1 ......
: ... ... ... ... ... ... ......
: 我最初的想法是先為每種電影類型新增欄位 將其預設值設為0
: 然後逐一比對genres欄位 如果有match則將值改為1
: 不過當我輸入以下指令以後
: movie <- data.frame("ID"=movies$V1, "Adventure", "Animation",...)
: 欄位變成
: ID X.Adventure X.Animation X.children.....
: 1 Action Animation Children
: 2 Action Animation Children
: ...
: 不知道該如何下手...(搔頭)
: 亦或是有其他更好的作法也歡迎討論
: 希望大家可以提點一下小的,感激不盡啊!
After reading README file,
there are some helpful information of the data.
## Try It
genre = read.csv(
file = "u.genre",
header = FALSE,
sep = "|",
stringsAsFactors = FALSE
)
myData = read.csv(
file = "u.item",
header = FALSE,
sep = "|",
stringsAsFactors = FALSE
)
myData = within(
data = myData,
expr = rm(V2, V3, V4, V5)
)
colnames(myData) = c("ID", genre$V1)
## Merge Two Data Frames, If You Need
merge(yourData, myData, by = "ID")