我有以下数据框:
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
答案 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)