作者HeroNoah ()
看板R_Language
标题Re: [问题] data.table 改值
时间Mon Jul 28 00:35:24 2014
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://webptt.com/cn.aspx?n=bbs/R_Language/M.1406478925.A.365.html
1F:→ celestialgod:thanks.. 07/28 00:52