0

我有这两个 data.frames

df1 <- data.frame(V1=c("A", "A", "B", "B", "B"), V2=c(0.8, 0.2, 0.3, 0.4, 0.9))
  V1  V2
1  A 0.8
2  A 0.2
3  B 0.3
4  B 0.4
5  B 0.9

df2 <- data.frame(V1=c("A", "B"), V2=c(0.3, 0.8))

  V1  V2
1  A 0.3
2  B 0.8

我想df$v3根据 V1 名称和 df2 的值向 df1 添加一个新列,即if (df1$V1 < df2$V2) {df$V3 == -1, else df$V3 == 0}. 为了说明,该示例的所需输出将如下所示:

  V1  V2 V3
1  A 0.8  0
2  A 0.2 -1
3  B 0.3 -1
4  B 0.4 -1
5  B 0.9  0

提前致谢

4

1 回答 1

1

正如我在评论中概述的那样,我认为这就是您所追求的:

df1 <- data.frame(V1=c("A", "A", "B", "B", "B"), V2=c(0.8, 0.2, 0.3, 0.4, 0.9))
df2 <- data.frame(V1=c("A", "B"), V2a=c(0.3, 0.8))
df <- merge(df1,df2)
df$V3 <- with(df,ifelse(V2 < V2a,-1,0))
> df
  V1  V2 V2a V3
1  A 0.8 0.3  0
2  A 0.2 0.3 -1
3  B 0.3 0.8 -1
4  B 0.4 0.8 -1
5  B 0.9 0.8  0

正如我所提到的,我更改了其中一个列的名称df2以使合并正常工作。

于 2013-05-21T16:13:16.207 回答