Je voudrais créer deux colonnes:
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
3 Réponses :
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%
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
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