2010-09-29 32 views
0

Je pense que c'est un problème régulier, a répondu à plusieurs reprises, mais je ne sais pas comment poser la bonne question = (données montrent que dans les deux tables MYSQL et/ou des objets R

dans MySQL:
j'ai 2 tables avec une sorte de cordes à l'intérieur, maintenant je veux:
1. les données qui se produisent dans les deux tableaux
2. les données d'un qui ne sont pas dans le tableau b

même dans R:
j'ai 2 R data.frame s et je veux:
1. les données qui se produisent dans un b
2. les données qui se produisent dans un, mais pas b

+0

R: Donc vos deux trames de données sont 'a' et 'b'? Et vous voulez trouver les cas où la ligne entière de la trame de données (qui pourrait être plusieurs valeurs) sont les mêmes entre 'a' et 'b'? – Spacedman

+0

Vraiment, vous pouvez effectuer ces deux opérations dans R en utilisant RMySQL –

+0

joshua et ErVeY m'a bien compris, ils ont donné la solution! à la fois dans R ?? pourquoi la même chose deux fois? Je voulais juste savoir comment ça marche dans les deux =) – TekTimmy

Répondre

3

en R:

a <- data.frame(V1=sample(letters[1:3],20,TRUE),V2=rnorm(20)) 
b <- data.frame(V1=sample(letters[2:4],20,TRUE),V2=rnorm(20)) 

# the data that occur in a and b 
(ab <- merge(a,b,by="V1")) 

# the data that occur in a but not in b 
aNOTb <- merge(a,b,by="V1",all=TRUE) 
(aNOTb <- aNOTb[is.na(aNOTb$V2.y),]) 
3

dans une base MySQL, vous pouvez le faire pour obtenir les données dans les deux tables

SELECT * FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id 

et faire pour obtenir le tada d'un qui ne sont pas dans le tableau b

SELECT * FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id 
WHERE t2.id IS NULL