Re: [問題] data.table 改值

看板R_Language作者時間10年前 (2014/07/28 00:35), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
DT[, b2 := b] DT[, b3 := b] DT[a == "A", b3 := as.integer(2 * b)] DT[a == "B", b3 := as.integer(3 * b)] DT ※ 引述《celestialgod (攸藍)》之銘言: : [問題類型]: : : 效能諮詢(我想讓R 跑更快) : : [軟體熟悉度]: : 使用者(已經有用R 做過不少作品) : [問題敘述]: : 最近在嘗試使用data.table跟dplyr,可是在資料整理上, : 我一直有個想找一個最簡單的寫法, : 我想要根據某一欄去創建一個新的變數, : 根據該欄的資訊,進行資料的新增, : 請看下面範例,我想要有類似sapply的寫法.... : [程式範例]: : library(data.table) : library(dplyr) : DT = data.table(a=rep(LETTERS[c(1:5)],2),b=4:13) : DT = mutate(DT, b2 = b) : set(DT, i = which(DT$a == "A"), j = "b2", : value = as.integer(DT[which(DT$a == "A")]$b * 2)) : set(DT, i = which(DT$a == "B"), j = "b2", : value = as.integer(DT[which(DT$a == "B")]$b * 3)) : DT$b3 = sapply(1:nrow(DT), function(i){ : if(DT[i]$a == "A") : DT[i]$b = DT[i]$b*2 : else if(DT[i]$a == "B") : DT[i]$b = DT[i]$b*3 : else : DT[i]$b : }) : DT : [關鍵字]: : : 選擇性,也許未來有用 : -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.64.43 ※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1406478925.A.365.html

07/28 00:52, , 1F
thanks..
07/28 00:52, 1F
文章代碼(AID): #1JrIfDDb (R_Language)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1JrIfDDb (R_Language)