#r
#r
Вопрос:
У меня есть первый фрейм данных как
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 — это символьный тип
Комментарии:
1. gsub(«[^0-9\.\-]», «», df1$feature_desc) : я мог бы отфильтровать цифры из столбца с помощью gsub
2. Я думаю, что ваш вопрос неясен, потому что он удаляет сравнение, а затем выполняет слияние с равенством
Ответ №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
столбец позже, если это не требуется.
Ответ №2:
Я отфильтровал цифры как new_values
gsub("[^0-9\.\-]", "", df1$feature_desc)
Затем удалены дубликаты переменной в df2 на основе значения из df1
df3 %>% filter(percent %in% df1$new_values)
затем объединили оба
merge(df3, df4, by.x='variable', by.y='feature')