r - apply a function in a data frame based on values from another data frame -
i have these 2 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 0.8 2 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 0.3 2 b 0.8
i add new column df1, df$v3
based on v1 names , on values of df2,i.e, if (df1$v1 < df2$v2) {df$v3 == -1, else df$v3 == 0}
. illustration desired output example following:
v1 v2 v3 1 0.8 0 2 0.2 -1 3 b 0.3 -1 4 b 0.4 -1 5 b 0.9 0
thanks in advance
as outlined in comment, think sort of you're after:
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 0.8 0.3 0 2 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
as mentioned, changed 1 of columns names in df2
make merging work properly.
Comments
Post a Comment