我的第一个数据帧为
feature feature_weight feature_desc
A 0.046891755 -0.831 < A
B -0.036292305 B <= -0.243
C 0.008370983 0.317 < C
D 0.007841638 0.212 < D
第二个数据帧为
variable binning percent
A ar1 -0.224
A ar2 0.715
A ar3 -0.831
B br1 -0.243
B br2 -0.016
B br3 0.128
C cr1 0.102
C cr2 0.317
C cr3 -0.022
D dr1 -0.522
D dr2 0.212
D dr3 -0.589
我需要将第二个数据帧中的合并值添加为第一个数据帧中的新列,但是只有那些从feature_desc列的字符数据类型中过滤掉的特定值,如下所示
feature feature_weight feature_desc binning
A 0.046891755 -0.831 < A ar3
B -0.036292305 B <= -0.243 br1
C 0.008370983 0.317 < C cr2
D 0.007841638 0.212 < D dr2
feature_desc是字符类型
答案 0 :(得分:1)
一旦您过滤掉数字,我们就可以merge
两个数据框来获取binning
的值。
df1$value <- gsub("[^0-9\\.\\-]", "", df1$feature_desc)
merge(df1, df2, by.x = c("feature", "value"), by.y = c("variable", "percent"))
# feature value feature_weight feature_desc binning
#1 A -0.831 0.046891755 -0.831 < A ar3
#2 B -0.243 -0.036292305 B <= -0.243 br1
#3 C 0.317 0.008370983 0.317 < C cr2
#4 D 0.212 0.007841638 0.212 < D dr2
如果不需要,您可以稍后删除value
列。
答案 1 :(得分:1)
我将数字过滤为new_values
gsub("[^0-9\\.\\-]", "", df1$feature_desc)
然后根据df1中的值删除df2中变量的重复项
df3 %>% filter(percent %in% df1$new_values)
然后将两者合并
merge(df3, df4, by.x='variable', by.y='feature')