如何获得R数据帧中给定行中的值与所有后续行的总和?

时间:2018-03-28 12:59:55

标签: r dataframe

我有以下数据框:

  area    peri
1 4990 2791.90
2 7002 3892.60
3 7558 3930.66
4 7352 3869.32

它由以下代码生成:

myData=(rock[1:3,c("area","peri")])
print(myData)

对于数据中的每一行,我想分别添加每个后续行的peri - 值。我该怎么做呢?换句话说:

问题: 我需要将哪些代码应用于myData才能获得此代码:

  area1  area2   periSUM
1  4990   7002   6684.5
2  4990   7558   6722.56
3  4990   7352   6661.22
4  7002   7558   7823.26
5  7002   7352   7761.92
6  7558   7352   7799.98

1 个答案:

答案 0 :(得分:2)

这可以使用SQL中的自联接来完成:

library(sqldf)
sqldf("select a.area as area1, b.area as area2, a.peri + b.peri as peri 
       from myData a join myData b on b.rowid > a.rowid")

,并提供:

  area1 area2    peri
1  4990  7002 6684.50
2  4990  7558 6722.56
3  4990  7352 6661.22
4  7002  7558 7823.26
5  7002  7352 7761.92
6  7558  7352 7799.98

注意

以可重复的形式使用的输入是:

Lines <- "
  area    peri
1 4990 2791.90
2 7002 3892.60
3 7558 3930.66
4 7352 3869.32"

myData <- read.table(text = Lines)