jllipatz / USSR

Small R toolbox
5 stars 5 forks source link

PROC TABULATE #5

Open jllipatz opened 6 years ago

jllipatz commented 6 years ago

Exemple de recodage et tabulation.

jllipatz commented 6 years ago

PP.zip

jllipatz commented 6 years ago

Sur la partie tabulation, il semble y avoir une piste avec 'expss'. Ci joint un embryon de code, partant du fichier final recodé, mais le code reste à compléter pour arriver au résultat souhaité. `library(haven) library(lubridate) library(expss)

a <- read_sas("U:/PALETTES/PP/final.sas7bdat")

a <- mutate(a,codhie2=ifelse(corps=="1134","En",codhie)) a$categorie <- factor(a$codhie2,c("A+","A","B","C","En")) a$age <- 2017 - year(aleatoire$datnai)

a <- apply_labels(a, age="", sexemp="", affadmin="", sexemp = num_lab(" 1 Homme 2 Femme ") )

a %>% tab_cells(age) %>% tab_cols(total(),categorie %nest% sexemp) %>% tab_rows(total(),affectation %nest% affectation2 ) %>% tab_stat_fun(Age = w_median, N = w_n,method=list) %>% tab_pivot() %>% drop_empty_rows() %>% htmlTable(caption = "Age median.")`

glucie commented 6 years ago

Bonjour,

Voici une version avec la fonction tabular. Je n'ai pas trouvé comment sélectionner les croisements que l'on souhaite afficher comme on peut le faire via l'option CLASSDATA de SAS. Dans cette version, s'affiche seulement les lignes avec individus (il suffit d'enlever l'option DropEmpty() pour voir tous les croisements).

library("xlsx", "dplyr", "tables")

library("lubridate")
library("magrittr")

annee <- 2017

final <- xlsx::read.xlsx("F:/Exemples R/proc tabulate/aleatoire 2.xlsx",1, stringsAsFactors = FALSE)

final$identi <- final$timbreadmin
final$affectation2 <- as.factor(dplyr::case_when(
                     final$identi == "R971-972" ~ "Direction régionale de Antilles-Guyane Martinique", 
                     final$identi=='R971-971' ~"Direction régionale de Antilles-Guyane Guadeloupe",

                     final$identi=='R971-973' ~ "Direction régionale de Antilles-Guyane Guyane",

                     substr(final$identi,1,3)=='R35' ~"Direction régionale de Bretagne",
                     TRUE ~ "NA"))

final$affectation <- as.factor(dplyr::case_when(
  substr(final$identi,1,4) == "R971" ~ "Direction régionale de Antilles-Guyane",
   substr(final$identi,1,3)=='R35' ~"Direction régionale de Bretagne",
  TRUE ~ ""))

final$codhie2 <- dplyr::case_when(
  final$corps=="1134" ~ 'En',
  TRUE ~ final$codhie
)
final$sexe <- as.factor( dplyr::case_when(
  final$sexemp =="1"~"Homme",
  final$sexemp =="2" ~ "Femme"
))
final$age <- annee - lubridate::year(final$datnai)
final$mois <- 12 - lubridate::month(final$datnai)
final$jour <- 31 - lubridate::day(final$datnai)

final$agearrondi <- round(final$age + (final$mois + final$age / 31) / 12, digits = 2)

tables::tabular( affectation * (affectation2+1) * (as.factor(codhie2)+1)*sexe * DropEmpty()  ~  1 + agearrondi*median, data = final)
FRHILD commented 6 years ago

Bonjour, voici un autre exemple d'utilisation de la Proc tabulate avec plusieurs paramètres et options utilisés. Il y a aussi un jeu de données anonymisées et des formats SAS également exemple_tabulate.zip utilisés