如何用第一行/上一行划分新列中的行?

时间:2019-03-08 16:47:47

标签: r rows divide

我想创建两列:

  1. 下一行的值应除以第一行的值。
  2. 为了将下一行的值除以前一行的值并以百分比表示。

数据

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%

3 个答案:

答案 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)

使用库dplyrscales

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%