【发布时间】:2021-08-29 17:47:38
【问题描述】:
我想在我的数据集中一次创建现有变量的多个差异和比率(在这种特殊情况下,但这可能是任何东西)。这个想法是创建我想要使用的变量列表(分别是根,因为它简化了很多任务),并使用它进一步使用 data.table 方法在一行中创建所有内容。
这是一个带有两个根的简单示例,以显示我正在寻找的内容。我们的想法是执行以下操作
setDT(dataset)[ , root1.xy_diff := root1.x - root1.y]
setDT(dataset)[ , root1.xy_ratio := root1.x / root1.y]
setDT(dataset)[ , root2.xy_diff := root2.x - root2.y]
setDT(dataset)[ , root2.xy_ratio := root2.x / root2.y]
我想做得很好,使用一行,而不是每次使用新根复制粘贴相同的行。我可以为 10 个变量做到这一点,但不是数千个。这不是很聪明。
如上所示,我以这样一种方式准备了数据集,即我想要计算差异/比率的变量始终具有相同的根。根据我在网上可以找到的内容,我正在考虑执行以下操作(使用相同的根 - 差异是值 x 和值 y 之间的差异,比率是 x 和 y 之间的比率):
roots <- c("root1","root2")
roots.x <- paste0(roots,".x")
roots.y <- paste0(roots,".y")
names <- c(paste0(roots,".xy_diff"), paste0(roots,".xy_ratio"))
dataset[ , (names) := list(difference(), ratio())]
or
dataset[ , c(paste0(roots,".xy_diff"), paste0(roots,".xy_ratio")) := lapply(.SD, list_of_functions), .SDcols=roots]
问题是,无论我尝试什么,都没有效果……我真的不知道应该怎么写。
如有必要,我可以添加一些数据。谢谢
【问题讨论】:
标签: r data.table