首页 > 解决方案 > R,数据框操作

问题描述

我在 R 中有以下数据框。

X1 <- c(451,2,6,2,7)
X2 <- c(0,1,6,3,4)
df <- data.frame(X1, X2)

我想添加两个额外的列(X3 和 X4),其中第一行是镜像的(X3=X2 和 X1=X4),从第二行开始,X3 等于前一行的 X4 加一,X4 等于X3(同一行)加上 X1(同一行)。

最终输出应如下所示

X1 <- c(451,2,6,2,7)
X2 <- c(0,1,6,3,4)
X3 <- c(0,452,455,462,465)
X4 <- c(451,454,461,464,472)
df <- data.frame(X1, X2, X3, X4)

您对如何在 R 中执行此操作有任何建议吗?

标签: rdataframe

解决方案


你可以这样做:

a <- df$X1
a[1] <- a[1] - 1
b <- cumsum(a+1)

transform(df, X3 = c(X2[1], head(b+1, -1)), X4 = b)
  X1 X2  X3  X4
1 451  0   0 451
2   2  1 452 454
3   6  6 455 461
4   2  3 462 464
5   7  4 465 472

推荐阅读