У меня есть два dataframesВыберите строки в одном фрейме данных на основе значений столбцов в другом?
df1
i1 i2 i3
p1 1 1 1
p2 0 1 1
p3 0 0 1
df2
p1 p2 p3
site1 0 0 1
site2 4 1 10
site3 15 0 0
Теперь я хочу, чтобы создать список dataframes для каждого сайта в df2. Файловые кадры должны состоять только из строк из df1, которые находятся в df2 и равны> 0.
Для примера новый ДФ в моем списке должен быть следующим:
site1: i1 i2 i3
p3 0 0 1
site2: i1 i2 i3
p1 1 1 1
p2 0 1 1
p3 0 0 1
site3: i1 i2 i3
p1 1 1 1
Помимо проблемы списка, я не могу получить R, чтобы выбрать правильные строки в df1. То, что я сделал до сих пор использует% в%
test<-df1[df1[,1] %in% (df2[1,-1]>0),]
, который дает мне COLNAMES (DF1) с < 0 строк> (или 0 длины row.names)
Кто-нибудь идея, где я пошло не так? Я не знаю, могу ли я каким-то образом использовать слияние, так как мне нужно проверить правильное кол-во и значение> 0.
Спасибо вам большое, что сработало неплохо. Тем не менее, я сначала получил некоторые странные результаты, и после того, как я просмотрел его, я обнаружил, что столбцы в df2 не отсортированы в алфавитном порядке. Поскольку передается только число, не указанное конкретное colname df2 [x,]> 0, я получил неправильные результаты (который был исправлен после их упорядочивания). Я просто блуждаю, если есть способ обойти эту проблему? В противном случае мне всегда нужно проверить, соответствуют ли имена ростов (df1) и colnames (df2) (или идентичны). Вот почему я начал с оператора% in%, потому что понял, что он смотрит на фактические строки. – eugenego