Re: [問題] data frame排序問題

看板R_Language作者 (天)時間9年前 (2016/11/03 08:04), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《locka (locka)》之銘言: : 先謝謝celestailgod大大的幫忙,不過抱歉小弟資質駑鈍 : 希望可以跟板上各位前輩求教討論>"< : ※ 引述《celestialgod (天)》之銘言: : : 用merge跟match就可以達到你要的效果了 : : library(data.table) : : library(pipeR) : : factory_list_dt <- data.table(factory = c("台北", "台中", "高雄", : : "新竹", "台南")) : : dt1 <- data.table(factory = c("台北", "高雄", "新竹", "台中", "台南"), : : rev = c(9.23913043478261,16.3571428571429, : : 15.6206896551724, 15.0980392156863, 10)) : : dt1_sorted <- merge(factory_list_dt, dt1, by = "factory", all.x = TRUE) %>>% : : `[`(match(factory_list_dt$factory, factory)) : 我知道前面 merge 會藉由對應factory這個欄位 把 f_list, dt1 join 在一起 : (如果沒理解錯的話) : 這邊主要想請問的都是`[`(match(factory_list_dt$factory, factory)) 這一行 : 1. match函式的第二個參數 "factory" 是甚麼東西的factory呢? : 個人猜測是前面 merge() 完產生出來的新的data table(在此設為dt_new) : 所以意思應該是「列出 f_list_dt中factory,在dt_new中的位置」 : 不知道這樣的理解正不正確? factory是merge出來的data.table中的一個column,也就是你這說的dt_new : 2. 那為什麼要用()把match的結果包起來? : 3. `[` 的意思是...? 2跟3一起說明,其實我們再用 A[i,j] 可以寫作 `[`(A, i, j),`[`是一個函數 : : dt2 <- data.table(factory = c("台北", "台中", "高雄"), : : rev = c(9.23913043478261,16.3571428571429, 15.6206896551724)) : : dt2_sorted <- merge(factory_list_dt, dt2, by = "factory", all.x = TRUE) %>>% : : `[`(match(factory_list_dt$factory, factory)) %>>% : : `[`(j = rev := ifelse(is.na(rev), 0, rev)) : 這邊 `[`(j = rev := ifelse(is.na(rev), 0, rev)) 也有同樣的問題 : 我知道大概意思是判斷rev, 如果其值是na的話就補0 否則就填rev原本的值 : 可是這個j是怎麼冒出來的啊??? 同2 3,j是`[`第三個element : 最後真的不得不感謝celestialgod大大,每次都可以瞬間解決問題 : 而且程式碼都好簡潔啊! : 也謝謝大家熱情幫忙!! :) -- R資料整理套件系列文: magrittr #1LhSWhpH (R_Language) https://goo.gl/OBto1x data.table #1LhW7Tvj (R_Language) https://goo.gl/QFtp17 dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/GcfNoP tidyr #1Liqls1R (R_Language) https://goo.gl/pcq5nq pipeR #1NXESRm5 (R_Language) https://goo.gl/cDIzTh -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.234.177.169 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1478131450.A.769.html
文章代碼(AID): #1O6dxwTf (R_Language)
文章代碼(AID): #1O6dxwTf (R_Language)