在R

时间:2015-11-08 11:40:30

标签: 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)

所有可能的ij。 并将这些新值分配给新列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]是{0.6,0.7,0.2]上的my_func和[2,3,4]的结果时my_func的结果为[{1}} 0.4,0.5,0.8] ......

2 个答案:

答案 0 :(得分:0)

如果我们使用'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)]

答案 1 :(得分:-1)

你可以这样做:

aFunction