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



我有这两个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, I的值为df1, df$v3添加一个新列。e, 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

Thanks in advance

正如我在评论中概述的那样,我认为这就是你想要的:

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中的一个列名以使合并正常工作。

最新更新