使用两列作为索引来计算第三列

时间:2016-11-22 15:46:32

标签: r list dataframe

我有一个载体

>a<-c(4,5,6,7,8)

我有一个data.frame

>df<-data.frame(start=c(1,4),end=c(3,5))

我想基于起始端

在此df中创建第三列
>df

start end
1     1   3   mean(a[1:3])
2     4   5   mean(a[4:5])

当然意味着(a [df $ start:df $ end])不起作用。 我通过创建一个新的data.frame已经解决了这个问题,但我想知道是否有一个简短的方法。

1 个答案:

答案 0 :(得分:1)

我们可以使用mapply来获取&#39; start&#39;的相应元素的seq。并且&#39;结束&#39;列,子集&#39; a&#39;根据该索引,获取mean并分配输出以在&#39; df&#39;中创建新列(&#39; Mean&#39;)

df$Mean <- mapply(function(x,y) mean(a[seq(x,y)]), df$start, df$end)