J'ai un ensemble de données sous
A B C 1 1 11 NA 2 2 13 9 3 3 15 10 4 4 17 11 5 5 18 12 6 6 20 12 7 7 25 13 8 8 30 17 9 9 40 21 10 10 80 30
Je dois créer une nouvelle colonne appelée C et avoir une différence entre 2 et 11, 3 et 13 et ainsi de suite. Le résultat final doit être
A B 1 1 11 2 2 13 3 3 15 4 4 17 5 5 18 6 6 20 7 7 25 8 8 30 9 9 40 10 10 80
3 Réponses :
Vous pouvez le faire dans la base R -
df$C <- c(NA, df$B[-nrow(df)]) - df$A
Vous pouvez utiliser la fonction shift du package data.table -
Code
data <- read.table(text = " A B 1 11 2 13 3 15 4 17 5 18 6 20 7 25 8 30 9 40 10 80",header=T)
Le moyen le plus intuitif est d'utiliser lag () comme suggéré par @camille.
data %>% mutate(C=lag(B)-A)
A B C
1 1 11 NA
2 2 13 9
3 3 15 10
4 4 17 11
5 5 18 12
6 6 20 12
7 7 25 13
8 8 30 17
9 9 40 21
10 10 80 30
Cette fonction est
lag