我有这两个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
提前致谢
答案 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
中的一个列名称,以使合并正常工作。