Bonjour,
J'ai un problème qui paraît anodin mais malgré toutes mes recherches, impossible de trouver une réponse.
J'aimerais simplement ajouter une ligne dans mon df en début de celui - ci. Et si possible, en deuxième ligne plus précisément.
Bonjour,
J'ai un problème qui paraît anodin mais malgré toutes mes recherches, impossible de trouver une réponse.
J'aimerais simplement ajouter une ligne dans mon df en début de celui - ci. Et si possible, en deuxième ligne plus précisément.
Bonjour,
Réponse de débutant, il y a peut-être plus simple/pratique/rapide, mais moi j'utilise rbind.
Tu crées avant tout ta nouvelle ligne (qui doit impérativement avoir les mêmes noms de colonnes, sinon R va piner. Utilise colnames pour les renommer au cas où), puis rbind.
Pour insérer à la deuxième ligne, simplement :
J'espère que c'est ce qu'il te fallait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part df <- rbind(df[1], new_line, df[2:nrow(df)])
Ce qui me perturbe un peu c'est que tu parles d'ajouter une ligne de titre, mais à la deuxième ligne ? Peut-être que tu parles d'une ligne de sous-titre ? Auquel cas tu peux te contenter de colnames pour renommer le nom des colonnes si elles sont appelées par défaut V1, V2, etc. Et juste insérer une nouvelle première ligne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 colnames(df) <- c("bla", "bli", "blo") df <- rbind(new_line, df])
Bonjour,
Par ajout d'une ligne de titre, je voulais dire qu'elle complétait la vraie ligne de titre. De façon à avoir deux lignes de titres (une pour noms de mes variables, et l'autre pour l'explication de ce à quoi elles correspondent).
J'ai essayé ta méthode, sans succès. Je me suis donc tourné vers une fonction que j'ai trouvé ailleurs.
Néanmoins, je me retrouve face à un certain problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 insert_perso=function(tab,ligne,i) { if(i==1){tab=rbind(ligne,tab)} if(i==nrow(tab)+1){tab=rbind(tab,ligne)} if(i>2 & i<=nrow(tab)){ tab=rbind(tab[1:(i-1),],ligne,tab[i:nrow(tab),]) } return(tab) }
Pour l'ajout de la ligne, j'ai dû recoder le format de mes variables "factor" pour ne garder que des variables de type "character" ou "numeric".
Cependant, lorsque j'ajoute ma ligne, toutes mes variables deviennent de type "character". Ce étant donné que ma ligne est de ce format.
Y aurait-il un moyen pour ajouter ma ligne sans toucher au format des variables de mon df ?
edit: je n'avais pas compris la vraie problématique, qui est plutôt d'ajouter un label aux noms de variables...
Ajouter une ligne dans une dataframe alors que ce n'est pas des données n'est pas une bonne idée, comme tu l'as remarqué.
Ce que tu peux faire :
-N'utiliser que les noms de colonnes, avec un nom style "titre_sousTitre".
-Utiliser un attribut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part attributes(DF)$sous.titre <-
Bonjour,
La première méthode n'est pas envisageable. Puisque cette utilisation de "code" pour mes variables me permet de simplifier grandement les choses.
Procéder ainsi reviendrais à ne pas changer grand chose au final.
Pour ce qui est de la seconde méthode, elle fonctionne. Néanmoins, ce qui pose problème ici, c'est que l'attribut n'apparaît ni dans la BDD, ni dans ma base EXCEL. Je vais essayer de chercher un peu de mon côté ... avec cette fonction attributes que je ne connais pas, en espérant avoir des résultats un peu plus concrets.
Merci pour l'aide apportée en tout cas
Je me permet de faire remonter le sujet, étant toujours d'actualité.
J'ai essayé de regarder un peu dans les packages proposés par la plateforme sans toutefois trouver ce qui pourrait m'intéresser. Le CRAN étant anglophone, difficile pour moi d'y chercher efficacement ce que j'aimerais.
C'est un besoin qui t'es spécifique, je ne pense pas qu'un package existe pour ça.
Par contre c'est pas bien difficile d'arriver au résultat que tu veux en utilisant un attribut ou une variable externe.
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 > df=data.frame(a=1:3,b=3:1) > attributes(df)$sous.titre = c("A","B") > print_avec_sous_titre = function(df){print(rbind(attributes(df)$sous.titre,df))} > print_avec_sous_titre(df) a b 1 A B 2 1 3 3 2 2 4 3 1
Bonjour,
Merci pour ce code qui fonctionne pour l'ajout de la ligne.
Néanmoins, la modification du format de colonne est toujours un problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 > df=data.frame(a=1:3,b=3:1) > str(df) # 'data.frame': 3 obs. of 2 variables: # $ a: int 1 2 3 # $ b: int 3 2 1J'ai pour le moment fais en sorte que cette partie de code soit placée à la fin de mon code. De manière à éviter les soucis de calculs liés à cette modification.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 > attributes(df)$sous.titre = c("A","B") > print_avec_sous_titre = function(df){print(rbind(attributes(df)$sous.titre,df))} > df <- print_avec_sous_titre(df) a b 1 A B 2 1 3 3 2 2 4 3 1 > str(df) # 'data.frame': 4 obs. of 2 variables: # $ a: chr "A" "1" "2" "3" # $ b: chr "B" "3" "2" "1" # - attr(*, "sous.titre")= chr "A" "B"
Si une façon d'y remédier, je suis preneur, sinon tant pis, j'agirais de cette façon. Encore merci en tout cas pour votre aide !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager