2
votes

Comment diviser les lignes d'une nouvelle colonne par la première / précédente ligne?

Je voudrais créer deux colonnes:

  1. Que la valeur de la ligne suivante doit être divisée par la valeur de la première ligne.
  2. Pour que la valeur de la ligne suivante soit divisée par la valeur de la ligne précédente et exprimée en pourcentage.

Données

No    Value    V2    V4
1    10    1    100%
2    15    1,5    150%
3    5     0,5    33,33%
4    10    1    200%
5    40    4    400%

Résultat :

1.

No    Value    V2
1    10    1
2    15    1,5
3    5     0,5
4    10    1
5    40    4

2 .

No    Value
1    10
2    15
3    5
4    10
5    40


0 commentaires

3 Réponses :


1
votes

Utilisation des bibliothèques dplyr et scales ,

data %>%
  mutate(V2 = Value / first(Value),
         V4 = scales::percent(Value / lag(Value)))

# A tibble: 5 x 4
     No Value    V2 V4   
  <dbl> <dbl> <dbl> <chr>
1     1    10   1   NA%  
2     2    15   1.5 150% 
3     3     5   0.5 33%  
4     4    10   1   200% 
5     5    40   4   400% 


0 commentaires

3
votes

Une option est

library(dplyr)
df1 %>%
  mutate(V2 = Value/first(Value), 
      V4 = 100 * Value/lag(Value, default = first(Value)) )
#No Value  V2        V4
#1  1    10 1.0 100.00000
#2  2    15 1.5 150.00000
#3  3     5 0.5  33.33333
#4  4    10 1.0 200.00000
#5  5    40 4.0 400.00000


0 commentaires

3
votes
cbind(df1,
      with(df1, {
          data.frame(V2 = Value/Value[1],
                     V4 = 100* c(1, tail(Value, -1)/head(Value, -1)))
      }))
#  No Value  V2        V4
#1  1    10 1.0 100.00000
#2  2    15 1.5 150.00000
#3  3     5 0.5  33.33333
#4  4    10 1.0 200.00000
#5  5    40 4.0 400.00000

0 commentaires