Je travaille avec une trame de données similaire à l'extrait ci-dessous:utilisant des chaînes syntaxiquement difficiles que les noms de colonnes dans une trame de données
df <- data.frame(A=c("Some messy string to be used",222,0),
B=c("Very important ? indicator from 2001", 888, 44),
C=c("001 This variable/makes no sense", 888, 44),
D=c("Geography", 1, 2))
Je voudrais utiliser des valeurs en première ligne en tant que noms de colonnes, je m en utilisant le code ci-dessous:
names(df) <- make.names(df[1,])
Malheureusement, la syntaxe génère des noms dans le format Xn, comme illustré ci-dessous:
> names(df)
[1] "X3" "X3" "X1" "X3"
Je comprends que les chaînes utilisées sont désordonnées pour que make.names
soit significativement converti. Comment puis-je forcer R à utiliser ces chaînes de manière plus efficace? En règle générale, je voudrais:
- Conserver les chiffres (comme ils correspondent à temps)
- Conserver au moins quelques premiers mots du texte
- Assurez-vous que les noms sont uniques
- L'ensemble de la solution doit être assez générique car il y a beaucoup de ordures dans la première rangée (généralement des espaces vides ou des caractères spéciaux).
Vous devrez peut-être '' unlist' dire make.names (unlist (df [1,])) 'La raison pour laquelle vous avez obtenu' X1: X5' est '' df' colonnes sont factor' et vous avez l'index numérique après la coercition, qui a été converti plus tard en ajoutant 'X' avec' make.unique' – akrun
@akrun, je suggère que vous le posiez comme réponse car la solution suggérée fonctionne bien. – Konrad