【发布时间】:2019-04-18 15:44:34
【问题描述】:
从虹膜数据集开始:
我想创建一个新列 B,其中第 1 行的值是 Sepal.Length 的值,第 2 行的值:n = B 从上一行 +(当前行的 Sepal.length - Sepal .length 上一行)。 所以行 B1 = 5.1, B2=5.1+(4.9-5.1 ...
谢谢!
编辑:上述模式只是部分的:公式应该只适用于(当前行的 Sepal.length - 前一行的 Sepal.length)。根据总督的回答,以下代码适用于编辑后的问题:
MyDataSet<-data.frame(time=c(1,2,3,1,2,3))
B <- rep(NA,(nrow(MyDataSet)))
B[1] <- MyDataSet$time[1]
for (i in 2:nrow(MyDataSet)) {
if (0<MyDataSet$time[i]-MyDataSet$time[i-1])
{B[i] <- B[i-1]+(MyDataSet$time[i]-MyDataSet$time[i-1]) }
else {B[i]<-B[i-1]+MyDataSet$time[i]}
}
MyDataSet$B <- B
【问题讨论】:
-
value for row 1 is the value of Sepal.Length and the values for rows 2:n = B from the previous row在第 1 行之前没有上一行。n是什么? -
第 1 行只是 Sepal.length 第 1 行。公式将从第 2 行开始。
-
你需要
head(iris) %>% mutate(new = Sepal.Length + c(diff(Sepal.Length), 0)) -
顺便说一句,
5.1 + (4.9 - 5.1) -> 4.9 -
调用上一行
PR和当前行CR。你想要PR + CR - PR = CR...?
标签: r