2011-04-11 5 views
4

J'ai ce qui semble une exigence simple, mais je n'arrive pas à atteindre le résultat souhaité. Mes données sont plutôt grandes, donc je vais juste donner une capture d'écran: enter image description hereCréer une colonne basée sur une autre base de données

Ce que je veux est: if ps2c$ps == present2$pn then ps2c$sf == present2$sf. Si ce n'est pas clair, pour chaque ps2c$ps il y a un present2$pn (présent2 est juste la moyenne des données).

+5

Une capture d'écran? Vous plaisantez j'espère? ;-) Sérieusement, juste * coller * la sortie de 'head (ps2c)' et 'head (present2)' dans votre Q, sélectionnez le code/sortie collé, et cliquez sur le bouton de code dans la barre d'outils (celui qui ressemble accolades '{}') ou appuyez sur 'Ctrl + k' pour que votre code soit correctement formaté. –

+1

Ma base de données est massive, mais je vais garder votre suggestion à l'esprit. –

+1

mais 'head()' ne montre que les premières lignes - mon point était, si vous pouvez montrer une capture d'écran, vous pouvez afficher le code et la sortie de 'head()'. –

Répondre

8

Vous ne fournit pas de données de test, mais quelque chose comme ce qui suit pourrait fonctionner:

ps2c$sf <- present2$sf[match(ps2c$ps, present2$pn)] 
+0

Cela fonctionne parfaitement. Merci beaucoup pour l'aide. –

+1

Je travaille avec un ensemble de données avec 72 millions d'observations, et j'essayais de faire cette tâche en utilisant une routine pas simple qui impliquait la fonction foreach. Je l'ai testé pour environ 1/1000 de mes données et cela a pris plus de 20 minutes. Avec votre solution, il a fallu une seconde pour l'ensemble des données. Je ne peux pas vous remercier assez. R roche vraiment, j'ai hâte d'être bon! – Vivi

Questions connexes