Salut j'ai une immense dataframe (df) dont les noms sont différents Tenors, dans les colonnes j'ai des valeurs pour chaque ténor. Pour les deux derniers ténors, j'ai quelques lignes manquantes que je veux compléter en fonction des données données pour les lignes non manquantes. Mon image ressemble à ceci:Prédire les valeurs de dataframe dans R
1095 1825 2555 3650 5475 7300 10950
0.00116034 0.00170552 0.00274189 0.00472176 0.00697495 NA NA
0.00112157 0.00188056 0.00295159 0.0050669 0.00728063 0.00816778 0.00842034
0.00138009 0.00225073 0.00339548 0.00549386 0.00780401 0.00871812 0.00897222
Je suis bloqué en utilisant predict() et lm. Je veux obtenir ces valeurs manquantes. Désolé pour cette question de base, mais je suis pressé et j'ai été bloqué pendant plus d'une heure.
Merci d'avance.
EDIT Je veux créer un modèle linéaire avec une trame de données, permet de dire DF2
df2 <-df[rowSums(is.na(df)) > 0,])
Et utiliser prédis trouver les valeurs manquantes pour 7300, 10950.
EDIT2:
Grâce à @Zheyuan Li j'ai connu des progrès, mais je ne peux pas obtenir mes données prédites, j'ai essayé d'utiliser deux options:Si j'exécute ce code, j'obtiens le pred avec les mêmes valeurs que b. En revanche, si j'utilise le code suivant, j'obtiens les mêmes valeurs pour toutes les valeurs prédites.
aov <- aov(data.lm,data=b)
pred<-predict(aov)
EDIT3:
J'ai adapté mon code et enlevé la dernière colonne pour faciliter les choses. Maintenant, j'ai les données suivantes:
1095 1825 2555 3650 5475 7300
0.00116034 0.00170552 0.00274189 0.00472176 0.00697495 NA
0.00112157 0.00188056 0.00295159 0.0050669 0.00728063 0.00816778
0.00138009 0.00225073 0.00339548 0.00549386 0.00780401 0.00871812
Mon nouveau code ressemble à ceci:
setDT(df)
variables<-setdiff(names(df),c('7300',"DATE"))
y_var<-"7300"
Line<-function (train_dat, test_dat, variables, y_var, family = "gaussian")
{
fm <- as.formula(paste(y_var, " ~", paste(variables, collapse = "+")))
glm1 <- glm(fm, data = train_dat, family = family)
pred <- predict(glm1, newdata = test_dat)
return(pred)
}
df[is.na(`7300`),`7300`:=
Line(train_dat=df[!is.na(`7300`),],
test_dat=df[is.na(`7300`)],
variables,
y_var)
]
Maintenant, je reçois l'erreur suivante:
Error in terms.formula(formula, data = data) :
invalid term in model formula
Savez-vous comment le résoudre ?
Si vous voulez imputer sur la base du 'mean',' median' etc d'un colonne, cocher 'na.aggregate' from' zoo' – akrun
Je veux créer le modèle linéaire basé sur les lignes avec des données complètes. Je ne veux pas seulement extrapoler basé sur les noms de l'image, mais utiliser les mêmes mouvements pour les lignes connues. Est-ce clair? – arodrisa
bien, vous devriez travailler sur la transposée de votre data.frame ... – agenis