[英]Apply a function on part of a dataframe in R
我定義了一個函數:
my_func <- function(vector1)
{ // do something
vector2 //vector 2 has the same length with vector1
}
現在,我有一個數據框:
id1 id2 value
1 1 0.6
1 1 0.7
1 1 0.2
1 2 0.4
1 2 0.8
我想在數據幀中創建一個新列value2
,通過在數據幀值的每個部分應用函數my_func
,具有相同的id1
和相同的id2
。 這意味着,我想打電話
my_func(dataframe[dataframe$id1 == i & dataframe$id2 == j,]$value)
所有可能的i
和j
。 並將這些新值分配給新列value2
相應行。
更新:
輸出應如下所示:
id1 id2 value value2
1 1 0.6 3
1 1 0.7 4
1 1 0.2 9
1 2 0.4 2
1 2 0.5 3
1 2 0.8 4
1 3 0.3 2
...
當[3,4,圖9是的結果my_func
上的[0.6,0.7,0.2],和[2,3,4]的結果是my_func
在[0.4,0.5,0.8] ...
如果我們使用 'id1' 和 'id2' 作為分組變量,我們可以使用dplyr
library(dplyr)
df1 %>%
group_by(id1, id2) %>%
mutate(value2= my_func(value))
或數據data.table
library(data.table)
setDT(df1)[, value2:= my_func(value), by = .(id1, id2)]
你可以這樣做:
my_func <- function(vector1) 100+vector1
d <- read.table(header=TRUE, text=
'id1 id2 value value2
1 1 0.6 3
1 1 0.7 4
1 1 0.2 9
1 2 0.4 2
1 2 0.5 3
1 2 0.8 4
1 3 0.3 2')
d$v3 <- ave(d$value, d$id1, d$id2, FUN=my_func)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.