Bonjour,
Je dois faire des sous datas frames à partir de col1 d'un data frame sachant que les individus y sont plus ou moins présent.
Pourriez vous m'aider ?
Bonjour,
Je dois faire des sous datas frames à partir de col1 d'un data frame sachant que les individus y sont plus ou moins présent.
Pourriez vous m'aider ?
bonjour,
si je comprends bien tu veux scinder ton dataframe initiale en plusieurs sous dataframes suivant les valeurs de la colonne col1
la fonction map du package purrr prend généralement 2 arguments le premier une liste , le deuxième une fonction et retourne une liste de d'objet , c'est équivalent à une boucle for on parcourt la liste que l'on applique à la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 library(dplyr) library(purrr) ## df le dataframe initial liste_ss_df<- map(unique(df$col1),~df %>% filter(col1 ==.x)) ## liste_ss_df contient la liste de tous les sous dataframe créés suivant les valeurs unique de col1
cdlt
PS peut_être plus simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 liste_ss_df<- split.data.frame(df,df$col1)
Je te remercie de ta réponse
Lorsque j'entre ces commandes il me met :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 liste_ss_dat<- map(unique(dat[,1]),~dat %>% filter(dat[,1] ==.x)) liste_ss_dat $`CODE PLANTE` Error in nchar(x[is_na], type = "width") : invalid multibyte string, element 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 liste_ss_df<- split.data.frame(dat,dat[,1]) liste_ss_df $`BQ_02_05` Error in nchar(x[is_na], type = "width") : invalid multibyte string, element 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 head(dat) # A tibble: 6 x 10 `CODE PLANTE` Traitt Bloc `N°HF` ZONE `L (mm)` `#fleurs_estimé~ `#graines` <chr> <chr> <dbl> <chr> <chr> <chr> <dbl> <chr> 1 BQ_02_05 WP 1 H1 Z1 20.3700~ 14 83 2 BQ_02_05 WP 1 H1 Z2 19.43 16 33 3 BQ_02_05 WP 1 H1 Z3 18.2199~ 13 7 4 BQ_02_05 WP 1 H2 Z1 3.00999~ 11 -1 5 BQ_02_05 WP 1 H2 Z2 3.08000~ 7 -1 6 BQ_02_05 WP 1 H2 Z3 2.91999~ 4 -1
je pense que s'est du à tes noms de colonnes avec des caractères spéciaux : d'une manière générale il faut éviter caractères spéciaux et là tu les collectionne # ~ () ° et les caractères accentués ainsi que les espaces
personnellement quand j'ouvre un dataframe je mets en forme les noms avec la fonction clean_names du package janitor
l'option snake transforme par ex NOM De Colonne en nom_de_colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 library(janitor) mon_dataframe%>% clean_names("snake")
Partager