2016-09-20 7 views
-5

В R Я пытаюсь подмножить df с несколькими векторами, которые являются категориальными. Оба вектора являются факторами, и я пытаюсь вернуть подмножество вектора, отвечающего следующим условиям. Из столбца «Хвост» я хотел бы идентифицировать только «Хвост», который относится к классу 1 & 2.Подмножество нескольких векторов на основе определенного условия

Например, только конечное подмножество должно включать только хвост B-123 и B-888, поскольку они являются единственными двумя хвостами, которые имеют оба класса 1 & 2, в то время как оставшиеся хвосты относятся только к классу 1 или классу 2. Я использую фильтр dplyr и определяю условия, но не смог дать правильные результаты.

Tail 
B-123 
B-645 
B-938 
B-123 
B-645 
B-938 
B-888 
B-888 
---------- 
Class 
1 
2 
1 
2 
2 
1 
1 
2 

ответ

0

Ну, я не уверен, что если Tail и Class являются частью одного и того же dataframe или два отдельных векторов. Если они два отдельных векторов, может быть, вы можете объединить два вектора в dataframe

df <- data.frame(Tail = as.character(Tail), Class = as.character(Class)) 

, а затем с dplyr вы можете попробовать,

library(dplyr) 
df %>% 
    group_by(Tail) %>% 
    summarise(uniq=n_distinct(Class)) %>% 
    filter(uniq ==2) 

# Tail uniq 
# (fctr) (int) 
#1 B-123  2 
#2 B-888  2 
+0

Да, они являются частью одного и того же ФР. Тем не менее, я пытаюсь отфильтровать уникальные Tails, которые имеют Class 1, а также Class 2, а не только класс 2. Надеюсь, это имеет смысл. Спасибо за попытку. – Nick

+0

@Nick Вы попробовали решение? Он должен работать. –

+1

да спасибо вы сработали – Nick

Смежные вопросы