2016-11-21 1 views
-5

J'ai une trame de données contenant une liste de sujets sous un certain seuil de précision (c'est-à-dire 50% incorrect): 1. J'ai une autre trame de données contenant tous les sujets (précis et inexacts) avec toutes leurs données. Il est important de noter qu'il y a plusieurs lignes par sujet dans ce bloc de données central: 2.Filtrage des sujets au-dessous du seuil de précision dans R

Je dois supprimer les sujets inexacts de l'image centrale dans 2. Comment faire cela dans R? J'ai déjà essayé le sous-ensemble:

filterdata<-subset(groupedmergedoutliers, subject==filtercorrectpercent$subject) 

'groupedmergedoutliers' est la trame de données centrale du sujet; 'filtercorrectpercent' est le cadre de données de sujets inexactes;

+1

Qu'avez-vous essayé? Où êtes-vous coincé? Savez-vous comment subdiviser les trames de données avec '[' ou avec 'subset()'? – Gregor

+0

J'ai essayé le sous-ensemble, mais il semble filtrer plus de valeurs qu'il ne le devrait. Je pense que le problème a à voir avec le fait que la trame de données centrale contient plusieurs lignes pour chaque sujet, mais la trame de données sujet inexacte ne contient qu'une seule ligne par sujet. –

+0

Eh bien, comment l'essayez-vous? Nous pouvons probablement faire une légère correction ... – Gregor

Répondre

0

Vous utilisez ==, qui teste l'égalité paire (par exemple, est la première ligne de df1$subject égale à la première ligne de df2$subject, sont les deuxièmes lignes égales, etc.). Tenir compte

c(1, 1, 2, 3) == c(1, 2, 3, 4) 
# [1] TRUE FALSE FALSE FALSE 

, vous voulez au lieu d'être tester si chaque rangée de df1$subject est dans une ligne de df2$subject. Nous pouvons utiliser %in% pour cela:

c(1, 1, 2, 3) %in% c(1, 2, 3, 4) 
# [1] TRUE TRUE TRUE TRUE 

filterdata <- subset(
    groupedmergedoutliers, 
    subject %in% filtercorrectpercent$subject 
)