Как отфильтровать один фрейм данных на основе значений ячеек другого фрейма, представленных как условие? - PullRequest
1 голос
/ 23 апреля 2019

У меня первый кадр данных как

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 является типом символа

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Я отфильтровал числовые значения как новые_значения

gsub("[^0-9\\.\\-]", "", df1$feature_desc)

Затем удалил дубликаты переменной в df2 на основе значения из df1

df3 %>%  filter(percent %in% df1$new_values)

затем объединили оба

merge(df3, df4, by.x='variable', by.y='feature')
1 голос
/ 23 апреля 2019

Как только вы отфильтруете числовые значения, мы можем 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 позже, если в этом нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...