矢量元素的总和与R中的条件

时间:2018-03-05 09:53:01

标签: r vector

我想计算向量元素的总和,并在超过0.8的值时停止求和。然后显示用于总和的第一个元素。

感谢。

3 个答案:

答案 0 :(得分:1)

接受@ akrun的回答。

tidyverse解决方案可能如下所示:

> library(tidyverse)
> #load your data
> a <- c(0.23076923, 0.21457490, 0.15384615, 0.13765182, 0.10931174, 0.10931174, 0.03238866, 0.01214575)
> a
[1] 0.23076923 0.21457490 0.15384615 0.13765182 0.10931174 0.10931174 0.03238866 0.01214575


> a %>%
as_tibble() %>%
mutate("cumsum" = cumsum(value)) %>%
filter(cumsum <= 0.8)

# A tibble: 4 x 2
      value    cumsum
      <dbl>     <dbl>
1 0.2307692 0.2307692
2 0.2145749 0.4453441
3 0.1538461 0.5991903
4 0.1376518 0.7368421

我已将您的矢量放入数据框(tidyverse术语中的tibble)并为运行总计添加了一个单独的列。过滤器会排除不符合条件的值。

希望有所帮助。

答案 1 :(得分:0)

我们可以使用cumsum来创建一个逻辑索引来对sum小于或等于0.8的元素进行子集化并得到这些元素的sum

a1 <- a[cumsum(a)<= 0.8]
sum(a1)
#[1] 0.7368421

答案 2 :(得分:0)

使用:

a <- c(0.23076923, 0.21457490, 0.15384615, 0.13765182, 0.10931174, 
       0.10931174, 0.03238866, 0.01214575)

使用逻辑索引向量a

对向量cumsum(a) < 0.8进行子集化
a[cumsum(a) < 0.8]
# [1] 0.2307692 0.2145749 0.1538461 0.1376518