J'ai une grande trame de données: l'âge

0
Annika 15 mars 2021 à 10:44

2 réponses

Meilleure réponse

Je pense que vos données devraient être structurées dans ce format.

age<- c(25,25,25,25,25,30,30,30,30,30)
pop<-c(1000,1000,1000,1000,1000,800,800,800,800,800)
df<-data.frame(age,pop)

Vous pouvez utiliser la fonction seq.

library(dplyr)
df %>% mutate(age = seq(min(age), length.out = n()))

#   age  pop
#1   25 1000
#2   26 1000
#3   27 1000
#4   28 1000
#5   29 1000
#6   30  800
#7   31  800
#8   32  800
#9   33  800
#10  34  800

Si vous souhaitez effectuer cette opération pour chaque variable sex et year, vous pouvez les ajouter dans group_by:

df %>% group_by(sex, year) %>% mutate(age = seq(min(age), length.out = n()))
1
Ronak Shah 15 mars 2021 à 07:49

Est-ce que ça marche:

library(dplyr)
t(df) %>% as_tibble() %>% group_by(age) %>% 
               mutate(age = age+0:(n()-1)) %>% ungroup() %>% as.matrix(df) %>% t()
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
age   25   26   27   28   29   30   31   32   33    34
pop 1000 1000 1000 1000 1000  800  800  800  800   800
1
Karthik S 15 mars 2021 à 07:49