[问题] data.table 改值

楼主: celestialgod (天)   2014-07-27 18:14:28
[问题类型]:
效能咨询(我想让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
[关键字]:
选择性,也许未来有用
作者: acecc (cc)   2014-07-27 22:12:00
data 有新增字段的运算子 ':=' 参考看看data.table
楼主: celestialgod (天)   2014-07-27 23:58:00
可是data.table新增几乎都是vectorise的运算我需要逐个判断....

Links booklink

Contact Us: admin [ a t ] ucptt.com