我想创建两列:
数据
No Value
1 10
2 15
3 5
4 10
5 40
结果:
1。
No Value V2
1 10 1
2 15 1,5
3 5 0,5
4 10 1
5 40 4
2。
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%
答案 0 :(得分:3)
一个选项是
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
答案 1 :(得分:3)
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
答案 2 :(得分:1)
使用库dplyr
和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%