使用给定模式有效地生成4列数字

时间:2019-01-24 04:28:52

标签: r

我想在R中生成一个由4列组成的数据框,例如

V1  V2  V3  V4
10  10   9   9
10  10   8   9
10  10   7   9
10  10   6   9
10  10   5   9  
 9   9   8   8
 9   9   7   8
 9   9   6   8
 9   9   5   8
 9   9   4   8
 9   9   3   8
 8   8   7   7

依次类推,直到v1和v2比开始时少8(或某个整数)。同样,在v3比v1小5(或再次为任意整数)后,v1和v2减少1。

1 个答案:

答案 0 :(得分:1)

您可以尝试tidyverse 首先,您必须为列V1

设置开始条件
values = 10:8
n=5:7

然后创建其余的

library(tidyverse)
tibble(V1 = rep(values, n)) %>% 
  arrange(-V1) %>% 
  mutate(V2 = V1) %>% 
  group_by(V1) %>% 
  mutate(V3 =(max(V2)-1):(max(V2)-n()),
         V4 = max(V2)-1) %>% 
  ungroup()
# A tibble: 18 x 4
      V1    V2    V3    V4
   <int> <int> <int> <dbl>
 1    10    10     9     9
 2    10    10     8     9
 3    10    10     7     9
 4    10    10     6     9
 5    10    10     5     9
 6     9     9     8     8
 7     9     9     7     8
 8     9     9     6     8
 9     9     9     5     8
10     9     9     4     8
11     9     9     3     8
12     8     8     7     7
13     8     8     6     7
14     8     8     5     7
15     8     8     4     7
16     8     8     3     7
17     8     8     2     7
18     8     8     1     7