Erreur dans son ensemble.les données.cadre : arguments doivent avoir la même longueur
Je reçois cette erreur et je ne suis pas tout à fait sûr de ce qu'il signifie. Tous mes noms de variables sont compatibles et il n'y a pas de fautes de frappe. Suis-je manqué quelque chose?
Le code
datNewagg <- aggregate (dataNew, by = list('x', 'y', 'z', 'a', 'ab'),
FUN = mean)
Produit l'erreur
Error in aggregate.data.frame(datNew, by = list("x", "y", :
arguments must have same length
- Pouvez-vous dput exactement datafame?
- Pouvez-vous montrer le
aggregate
appel, comme il mat être spécifié de manière incorrecte. ty - Vous obtenez une erreur similaire avec
aggregate(mtcars, list("am"), mean)
. Mais si vous la spécifiez commeaggregate(mtcars, list(mtcars$am), mean)
ouaggregate(. ~ am , mean, data=mtcars)
tout est ok datNewagg <- aggregate (dataNew, by = list('x', 'y', 'z', 'a', 'ab'), FUN = mean)
- ok, regardez le commentaire ci-dessus sur la définition de la fonction d'agrégation. . Essayez
datNewagg <- aggregate (. ~ x + y + z + a + ab), FUN = mean, data=dataNew)
oudatNewagg <- with(dataNew, aggregate (dataNew, by = list(x, y, z, a, ab), FUN = mean))
Vous devez vous connecter pour publier un commentaire.
En supposant que c'est pas une faute de frappe (le bloc de données est appelé
dataNew
dans votre appel, maisdatNew
dans l'erreur), sontx
,y
,z
,a
etab
les noms des colonnes dansdataNew
?Certaines fonctions, comme
sous-ensemble
, vous permettra de spécifier les noms de colonne de l'objet qu'il travaille directement. Leagrégation
fonction n'est pas, de sorte que toutes les colonnes dedataNew
répertoriés dans leby
argument doivent expressément désignés comme tels. Essayez ceci:J'ai utilisé cette erreur.
La solution la plus simple pour supprimer cette erreur est d'écrire toutes les variables ainsi que leurs nom du jeu de données comme "ds_name$var_name".
Je ne suis pas sûr quel est le nom du jeu de données est votre cas, alors je vais vous donner un autre exemple similaire.
Ici, "rh" est le nom du jeu de données et "de l'Année.Total", "Hospital_ID", "District_ID", "Instrument_ID" sont les variables "rh" dataset.
L'écriture des fonctions d'agrégation de cette façon ne sera jamais vous donner toute erreur de nouveau.
Vérifier
class(dataNew)
. Si ce n'est pas un ensemble de données.cadre, cettedataNew <- data.frame(dataNew)
avant l'agrégation doit résoudre l'erreur ouLorsque vous utilisez
with(...,aggregate(...))
ne mettez pas vos noms de colonne dans les citations.À l'aide de
data.frame
commeby
argument fonctionne pour moiessayez ceci:
Je veux dire ne pas donner le
by
argument, juste le nom de l'argumentation, de donner un ensemble de données.cadre avec des colonnes que ces arguments