web-dev-qa-db-fra.com

La colonne `projet` doit être un vecteur atomique 1d ou une liste

J'ai un cadre de données appelé df, j'ai besoin de filtrer les données d'un cadre de données à l'aide de filter ().

mon cadre de données

Queue   project._id   project.ProjectName    project.Status  project.CreatedBy  project.Createdtime     X.gender

first     111              Travel                1               manchi         2017-04-24 18:50:27       male

last      111              2334                  1               mono             2017-04-24 18:50:27      Female

first     111              556                  1               gunal            2017-04-24 18:50:27       male

first     7888            classical             1               manchi            2017-04-24 18:50:27      Female

J'essaie d'utiliser dplyr pour filtrer les données par le code ci-dessous.

Finalfilter<-df%>% 
   filter(project.ProjectName == "Travel",Queue=="first")%>%
    select(X.gender.)

mon résultat attendu est

Queue   project._id   project.ProjectName    project.Status  project.CreatedBy  project.Createdtime     X.gender

first     111              Travel                1               manchi         2017-04-24 18:50:27       male

first     111              556                  1               gunal            2017-04-24 18:50:27       male

Mais je reçois en-dessous d'ERREUR, aidez-moi à résoudre ce problème.

Erreur: La colonne project doit être un vecteur atomique 1d ou une liste

dput.

structure(list(Queue = c("first", "last", "first", "first"), 
    project = structure(list(`_id` = c("111", "2334", "556", 
    "7888"), ProjectName = c("Travel", "HBussiness", "Travel", 
    "classical"), Status = c(1L, 1L, 1L, 1L), CreatedBy = c("manchi", 
    "mono", "gunal", "manchi"), Createdtime = structure(c(1493040027.826, 
    1493040027.826, 1493040027.826, 1493040027.826), class = c("POSIXct", 
    "POSIXt"))), .Names = c("_id", "ProjectName", "Status", "CreatedBy", 
    "Createdtime"), row.names = c(NA, 4L), class = "data.frame"), 
    X.gender. = c("male", "Female", "male", "Female")), .Names = c("Queue", 
"project", "X.gender."), row.names = c(NA, 4L), class = "data.frame")
4
kannan k

Votre project.ProjectName est un bloc de données, pas un vecteur, d’où l’erreur. Une solution de contournement peut être,

df$project <- df$project$ProjectName

df%>% 
     filter(project == "Travel" & Queue=="first")%>%
     select(X.gender.)

#  X.gender.
#1      male
#2      male
4
Sotos

Si cela ne fonctionne pas avec dplyr, une autre option est: 

df[df$project.ProjectName == "Travel" & Queue=="first", ]
1
sebak