All,
Trying to use := well but get errors and warnings and am looking for an elegant
way to subset and use := together when multiple variables are being created and
factors are involved.
Here's some code showing what I'm trying to do. Any help in doing this better
greatly appreciated:
#########################################################
###
### Test of data.table and :=
###
#########################################################
require(data.table)
### Base data.table
test.dt <- data.table(ID=rep(1:10, 2), CONTENT_AREA=as.factor(rep(c("MATH",
"READ"), each=10)), X=rnorm(10))
setkeyv(test.dt, c("ID", "CONTENT_AREA"))
test.dt
### Values to be looked up
my.lookup <- data.table(ID=1:5, CONTENT_AREA=as.factor("MATH"))
my.lookup
### Data table to be added to the original data.table
my.additional.table <- data.table(my.lookup, VALID_CASE=factor(1, levels=1:2,
labels=c("VALID_CASE", "INVALID_CASE")), Y=as.factor(letters[1:5]), Z=101:105)
my.additional.table
### First attempt with error
test.dt[my.lookup, names(my.new.table) := my.additional.table, with=FALSE,
mult="first"]
### Create the variables in test.dt using := (but gives warnings and is
cumbersome to have to specify the class of the variables that are going to be
created)
### NOTE:
for (i in c("VALID_CASE", "Y", "Z")) {
test.dt[, i := NA_integer_, with=FALSE, mult="first"]
class(test.dt[[i]]) <- class(my.additional.table[[i]])
if (is.factor(test.dt[[i]])) levels(test.dt[[i]]) <-
levels(my.additional.table[[i]])
}
### Sucessfully perform the variable creation on the rows indicated by my.lookup
test.dt[my.lookup, names(my.additional.table) := my.additional.table,
with=FALSE, mult="first"]
Damian Betebenner
Center for Assessment
PO Box 351
Dover, NH 03821-0351
Phone (office): (603) 516-7900
Phone (cell): (857) 234-2474
Fax: (603) 516-7910
[email protected]<mailto:[email protected]>
www.nciea.org<http://www.nciea.org/>
_______________________________________________
datatable-help mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/datatable-help