2
votes

Y a-t-il une fonction R pour avoir la différence entre n-1 ligne

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

r

1 commentaires

Cette fonction est lag


3 Réponses :


2
votes

Vous pouvez le faire dans la base R -

df$C <- c(NA, df$B[-nrow(df)]) - df$A


0 commentaires

1
votes

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)


0 commentaires

0
votes

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


0 commentaires