【发布时间】:2021-05-12 10:29:06
【问题描述】:
我有一个包含 3 列(V1、V2 和 V3)的数据框 (df)。我想添加一列(V4),我在其中输入(对于每一行)来自另一行的 V3 的值,其中 V1+0.5 的值等于第 i 行的 V1 并且其中 V2+0.5 的值等于第 i 行的 V2。
对于不满足这个条件的行,我要在V4的那一列有一个NA。
V1 <- c(-2.5,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5)
V2 <- c(14,14.5,15,15.5,1,1.5,2,2.5,8,8.5,9,9.5,10)
V3 <- c(42,42.1,42.2,42.3,42.4,42.5,42.6,42.7,42.8,42.9,43,43.1,43.2)
df <- data.frame(V1,V2,V3)
对于这个输入数据:
V1 V2 V3
-2.5 14 42
-2 14.5 42.1
-1.5 15 42.2
-1 15.5 42.3
-0.5 1 42.4
0 1.5 42.5
0.5 2 42.6
1 2.5 42.7
1.5 8 42.8
2 8.5 42.9
2.5 9 43
3 9.5 43.1
3.5 10 43.2
我想要的结果是:
V1 V2 V3 V4
-2.5 14 42 NA
-2 14.5 42.1 42
-1.5 15 42.2 42.1
-1 15.5 42.3 42.2
-0.5 1 42.4 NA
0 1.5 42.5 42.4
0.5 2 42.6 42.5
1 2.5 42.7 42.6
1.5 8 42.8 NA
2 8.5 42.9 42.8
2.5 9 43 42.9
3 9.5 43.1 43
3.5 10 43.2 43.1
我想我可以使用 for 循环和 ifelse 语句(使用 is.na 作为 NA 值),但我不知道如何使用看起来像 df$V1(of row i ) == df$V1+0.5(第 x 行)(与 V2 相同)。
【问题讨论】:
标签: r dataframe for-loop conditional-statements