首页 > 解决方案 > 在R中使用起点和终点变量对范围求和

问题描述

我有一个包含以下变量的数据框:

start_point    end_point    variable_X
     1             5           0.3757
     2             7           0.4546       
     3             7           0.1245 
     4             8           0.3455
     5             11          0.2399 
     6             12          0.0434
     7             15          0.4323
     ...           ...           ... 

我想添加第四列,将变量 X 从起点到前两列中定义的终点相加,即第一行中的条目将是 1 和 5(含)之间的总和:0.3757+0.4546+ 0.1245+0.3455+0.2399 = 1.5402,第二行的输入将是 2 到 7(含)之间的总和:0.4546+0.1245+0.3455+0.2399+0.0434+0.4323 = 1.6402 等等。

我是 R 新手,任何帮助将不胜感激。

标签: rrange

解决方案


可能有更巧妙的方法可以做到这一点,但这里有一个快速版本:

df$sumX <- apply(df, 1, function(x) sum(df$variable_X[x[1]:x[2]]))
df

  start_point end_point variable_X   sumX
1           1         5     0.3757 1.5402
2           2         7     0.4546 1.6402
3           3         7     0.1245 1.1856
4           4         8     0.3455     NA
5           5        11     0.2399     NA
6           6        12     0.0434     NA
7           7        15     0.4323     NA

最后几行在NA这里,因为我没有您的数据的第 8 行到第 15 行。


推荐阅读