根据特定条件对多个向量进行子集

时间:2016-09-20 17:06:48

标签: r

在R中我试图使用多个分类的向量对df进行子集化。两个向量都是因子,我试图返回满足以下条件的子集向量。在名为Tail的专栏中,我只想识别1级和1级的Tail。 2.

仅作为示例,最后一个子集应该仅包括尾部B-123和B-888,因为它们是仅有的两个具有1级和1级的尾部。 2,剩余的Tails只有1级或2级。我一直在使用dplyr过滤器并指定条件但是无法产生正确的结果。

    <?xml version="1.0" encoding="utf-8"?>
    <Persoane>
      <Angajat>
        <Nume_Prenume>horatiu</Nume_Prenume>
        <ID>id1< /ID>
        <Password>123< /Password>
        <Nr_de_telefon>1</Nr_de_telefon>
        <Adresa>1</Adresa>
      </Angajat>
    <Angajat>
      <Nume_Prenume>a</Nume_Prenume>
      <ID>id2</ID>
      <Password>1234</Password>
      <Nr_de_telefon>1</Nr_de_telefon>
      <Adresa>1</Adresa>
    </Angajat>
   <Angajat>
    <Nume_Prenume>2</Nume_Prenume>
    <ID>id3</ID>
    <Password>12345</Password>
    <Nr_de_telefon>a</Nr_de_telefon>
    <Adresa>a</Adresa>
   </Angajat>
 </Persoane>

1 个答案:

答案 0 :(得分:0)

好吧,我不确定TailClass是否是同一数据帧的一部分,或者是两个单独的向量。如果它们是两个单独的向量,也许你可以在数据帧中合并这两个向量

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