【发布时间】:2015-05-04 07:52:33
【问题描述】:
我想用家庭调查数据更新大表中的几列。大约 20 列的支出报告为负值。但是,我想要绝对值(用于生成乳胶表)。 我只设法生成一个只有这些更新列的新 data.table。这是一个例子。我只想更新第 2 列和第 3 列:
library(data.table)
test <- data.table(c(1,2,3,4),c(-2,-3,-4,-5),c(-1,-4,-5,-6),c(1,2,3,6))
test[,lapply(.SD,abs),.SDcols=2:3]
这给了我一个包含第 2 列和第 3 列的 data.table,而不是完整的 data.table。
我可以轻松地制作 data.frames 并使用 cbind:
df1.test<-data.frame(test)[,-c(2:3)]
df2.test<-data.frame(test[,lapply(.SD,abs),.SDcols=2:3])
test<-data.table(cbind(df1.test,df2.test))
但也许在 data.table 中有更聪明的方法。
谢谢 伦格
【问题讨论】:
-
可以使用dplyr包
library(dplyr); test <- test %>% mutate(V2 = abs(V2), V3=abs(V3)) -
您熟悉
:=运算符吗?
标签: r data.table