作者celestialgod (攸蓝)
看板R_Language
标题[问题] data.table 改值
时间Sun Jul 27 18:14:28 2014
[问题类型]:
效能谘询(我想让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), 来自: 218.164.170.55
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1406456070.A.482.html
1F:推 acecc:data 有新增栏位的运算子 ':=' 参考看看 07/27 22:12
2F:→ acecc:data.table 07/27 22:12
3F:→ celestialgod:可是data.table新增几乎都是vectorise的运算 07/27 23:58
4F:→ celestialgod:我需要逐个判断.... 07/27 23:59