我定义了一个函数:
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]是{0.6,0.7,0.2]上的my_func
和[2,3,4]的结果时my_func
的结果为[{1}} 0.4,0.5,0.8] ......
答案 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