基于来自另一个数据帧的值在数据帧中应用函数

时间:2013-05-21 15:48:12

标签: r

我有这两个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

我想根据V1名称和df2的值(即df$v3)向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

提前致谢

1 个答案:

答案 0 :(得分: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中的一个列名称,以使合并正常工作。