【问题标题】:Add new data.frame column based on values in other columns根据其他列中的值添加新的 data.frame 列
【发布时间】:2018-02-09 15:26:32
【问题描述】:

我正在尝试遍历数据表以计算两列的积分,dt$xmindt$xmax,函数 f,将答案写入新列 dt$integral .我目前正在尝试使用类似下面的代码但没有成功:

dt$integral <- mapply(f, dt$xmin, dt$xmax)

任何帮助将不胜感激!

【问题讨论】:

标签: r dataframe data.table


【解决方案1】:

也许你不需要mapply,一个简单的分配应该可以工作dt$integral&lt;- f(dt$min, dt$max)。没有您想要的数据或示例,但我认为这对您有用(使用data.table):

library(data.table)
dt <- as.data.table(mtcars)
newfunc <- function(a, b){
  return(a + log(b) - exp(a/b) + 3.1*a^1.918)
}

# Adding a new column called "newcol"
> head(dt[, newcol := newfunc(wt, mpg/qsec),])

    mpg cyl disp  hp drat    wt  qsec vs am gear carb    newcol
1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4  14.73145
2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4  16.30387
3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1  11.45233
4: 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1  13.87593
5: 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2  13.78816
6: 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1 -10.84599

对于单个新列,上述变量分配样式将起作用。对于多个新列和函数,您需要使用返回新列列表的函数。在data.table 中使用:= 查找有关作业的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多