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")
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
Si cela ne fonctionne pas avec dplyr, une autre option est:
df[df$project.ProjectName == "Travel" & Queue=="first", ]