[英]Add new data.frame column based on values in other columns
我試圖迭代一個數據表來計算兩列的積分,一個dt$xmin
和一個dt$xmax
,使用函數f
,將答案寫入新列dt$integral
。 我目前正在嘗試使用類似下面的代碼但沒有成功:
dt$integral <- mapply(f, dt$xmin, dt$xmax)
任何幫助將不勝感激!
也許您不需要mapply
並且一個簡單的分配應該可以工作dt$integral<- f(dt$min, dt$max)
。 沒有您想要的數據或示例,但我認為這對您data.table
(使用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
查找更多關於賦值的data.table
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.