J'essaie de calculer plusieurs nouvelles variables dans mon Dataframe. Prenez les valeurs initiales par exemple:
Dites que j'ai: p> et je veux: p> donc et la variable change pour les nouvelles variables. Voici ma tentative: p> qui fonctionne sans erreur mais ne produit rien. Je voudrais affecter les noms de variables dans l'exemple (par exemple. "VAR1_1990") et apporter immédiatement la nouvelle variables faisant partie du Dataframe. Je voudrais aussi éviter la boucle pour la boucle, mais je ne sais pas comment envelopper deux acadrés autour de cette fonction. Devrais-je plutôt avoir la fonction utiliser deux arguments? Le problème est-il que la fonction d'application ne porte pas les résultats dans mon environnement? J'ai été coincé ici pendant un moment, alors je serais reconnaissant de toute aide! P> PS: J'ai la solution pour faire cette combinaison par combinaison sans appliquer et les goûts mais j'essaie de m'éloigner de la copie et de la pâte: p>
3 Réponses :
Ceci peut être fait avec La commande de colonne n'est pas exactement ce que vous avez dans votre question, mais vous pouvez corriger cela après le fait avec une opération d'index, si nécessaire. p> p> sous-ensemble () code>
, remodèle () code>
et fusion () code>
:
avec Data EM> p> code em> stry> p> dplyr code> et
titsy code> et à l'aide d'une fonction personnalisée, essayez ce qui suit:
Voici un datable.table code> méthode:
require(data.table)
dt <- as.data.table(Dataset)
in_cols = c("var1", "var2")
out_cols = do.call("paste", c(CJ(in_cols, unique(dt$time)), sep="_"))
dt[, (out_cols) := unlist(lapply(.SD, as.list), FALSE), by=geo, .SDcols=in_cols]
# time geo var1 var2 var1_1990 var1_1991 var1_1992 var2_1990 var2_1991 var2_1992
# 1: 1990 AT 1 7 1 2 3 7 8 9
# 2: 1991 AT 2 8 1 2 3 7 8 9
# 3: 1992 AT 3 9 1 2 3 7 8 9
# 4: 1990 DE 4 10 4 5 6 10 11 12
# 5: 1991 DE 5 11 4 5 6 10 11 12
# 6: 1992 DE 6 12 4 5 6 10 11 12