在R中的指定日期之后对行进行编号
Numerating rows after a specified date in R
这很可能是一个非常简单的修复方法,但请继续。很简单,我试图在我的数据框中计算特定日期之后的行。这是数据的示例:-
Date<-structure(c(18485, 18486, 18487, 18488, 18489, 18490, 18491,
18492, 18493, 18494, 18495, 18496, 18497, 18498, 18499, 18500,
18501, 18502, 18503, 18504, 18505, 18506, 18507, 18508, 18509,
18510, 18511, 18512, 18513, 18514, 18515, 18516, 18517, 18518,
18519, 18520, 18521, 18522, 18523, 18524, 18525, 18526, 18527
), class = "Date")
Count<-c(54L, 42L, 44L, 52L, 51L, 47L, 53L, 45L, 41L, 56L, 45L, 56L,
52L, 57L, 48L, 47L, 52L, 58L, 51L, 41L, 53L, 155L, 123L, 98L,
90L, 84L, 71L, 58L, 50L, 54L, 45L, 58L, 48L, 49L, 60L, 41L, 60L,
46L, 40L, 50L, 49L, 57L, 58L)
df<-data.frame(Date,Count)
我想要做的是将行编号为 1 直到数据框结束,但仅在特定日期之后。将其视为约会后的“天数”。例如,我想以一种指示 2020-09-01 之后(包括)天数的方式对行进行编号,但我得到了这个:-
df$intv_trend<-ifelse(df$Date<as.Date("2020-09-01"),0,1:22)
df
Date Count intv_trend
1 2020-08-11 54 0
2 2020-08-12 42 0
3 2020-08-13 44 0
4 2020-08-14 52 0
5 2020-08-15 51 0
6 2020-08-16 47 0
7 2020-08-17 53 0
8 2020-08-18 45 0
9 2020-08-19 41 0
10 2020-08-20 56 0
11 2020-08-21 45 0
12 2020-08-22 56 0
13 2020-08-23 52 0
14 2020-08-24 57 0
15 2020-08-25 48 0
16 2020-08-26 47 0
17 2020-08-27 52 0
18 2020-08-28 58 0
19 2020-08-29 51 0
20 2020-08-30 41 0
21 2020-08-31 53 0
22 2020-09-01 155 22
23 2020-09-02 123 1
24 2020-09-03 98 2
25 2020-09-04 90 3
26 2020-09-05 84 4
27 2020-09-06 71 5
28 2020-09-07 58 6
29 2020-09-08 50 7
30 2020-09-09 54 8
31 2020-09-10 45 9
32 2020-09-11 58 10
33 2020-09-12 48 11
34 2020-09-13 49 12
35 2020-09-14 60 13
36 2020-09-15 41 14
37 2020-09-16 60 15
38 2020-09-17 46 16
39 2020-09-18 40 17
40 2020-09-19 50 18
41 2020-09-20 49 19
42 2020-09-21 57 20
43 2020-09-22 58 21
我怎样才能让 2020-09-01 成为第 1 天(而不是第 22 天)并且 df 中的最后一个日期是第 22 天,而不是第 21 天?一如既往,提前谢谢你。
您可以尝试根据所选日期之后的日期使用 cumsum
。这里的优点是您不需要指定所需的日期数。
df$intv_trend <- cumsum(df$Date >= as.Date("2020-09-01"))
输出
Date Count intv_trend
1 2020-08-11 54 0
2 2020-08-12 42 0
3 2020-08-13 44 0
4 2020-08-14 52 0
5 2020-08-15 51 0
6 2020-08-16 47 0
7 2020-08-17 53 0
8 2020-08-18 45 0
9 2020-08-19 41 0
10 2020-08-20 56 0
11 2020-08-21 45 0
12 2020-08-22 56 0
13 2020-08-23 52 0
14 2020-08-24 57 0
15 2020-08-25 48 0
16 2020-08-26 47 0
17 2020-08-27 52 0
18 2020-08-28 58 0
19 2020-08-29 51 0
20 2020-08-30 41 0
21 2020-08-31 53 0
22 2020-09-01 155 1
23 2020-09-02 123 2
24 2020-09-03 98 3
25 2020-09-04 90 4
26 2020-09-05 84 5
27 2020-09-06 71 6
28 2020-09-07 58 7
29 2020-09-08 50 8
30 2020-09-09 54 9
31 2020-09-10 45 10
32 2020-09-11 58 11
33 2020-09-12 48 12
34 2020-09-13 49 13
35 2020-09-14 60 14
36 2020-09-15 41 15
37 2020-09-16 60 16
38 2020-09-17 46 17
39 2020-09-18 40 18
40 2020-09-19 50 19
41 2020-09-20 49 20
42 2020-09-21 57 21
43 2020-09-22 58 22
这很可能是一个非常简单的修复方法,但请继续。很简单,我试图在我的数据框中计算特定日期之后的行。这是数据的示例:-
Date<-structure(c(18485, 18486, 18487, 18488, 18489, 18490, 18491,
18492, 18493, 18494, 18495, 18496, 18497, 18498, 18499, 18500,
18501, 18502, 18503, 18504, 18505, 18506, 18507, 18508, 18509,
18510, 18511, 18512, 18513, 18514, 18515, 18516, 18517, 18518,
18519, 18520, 18521, 18522, 18523, 18524, 18525, 18526, 18527
), class = "Date")
Count<-c(54L, 42L, 44L, 52L, 51L, 47L, 53L, 45L, 41L, 56L, 45L, 56L,
52L, 57L, 48L, 47L, 52L, 58L, 51L, 41L, 53L, 155L, 123L, 98L,
90L, 84L, 71L, 58L, 50L, 54L, 45L, 58L, 48L, 49L, 60L, 41L, 60L,
46L, 40L, 50L, 49L, 57L, 58L)
df<-data.frame(Date,Count)
我想要做的是将行编号为 1 直到数据框结束,但仅在特定日期之后。将其视为约会后的“天数”。例如,我想以一种指示 2020-09-01 之后(包括)天数的方式对行进行编号,但我得到了这个:-
df$intv_trend<-ifelse(df$Date<as.Date("2020-09-01"),0,1:22)
df
Date Count intv_trend
1 2020-08-11 54 0
2 2020-08-12 42 0
3 2020-08-13 44 0
4 2020-08-14 52 0
5 2020-08-15 51 0
6 2020-08-16 47 0
7 2020-08-17 53 0
8 2020-08-18 45 0
9 2020-08-19 41 0
10 2020-08-20 56 0
11 2020-08-21 45 0
12 2020-08-22 56 0
13 2020-08-23 52 0
14 2020-08-24 57 0
15 2020-08-25 48 0
16 2020-08-26 47 0
17 2020-08-27 52 0
18 2020-08-28 58 0
19 2020-08-29 51 0
20 2020-08-30 41 0
21 2020-08-31 53 0
22 2020-09-01 155 22
23 2020-09-02 123 1
24 2020-09-03 98 2
25 2020-09-04 90 3
26 2020-09-05 84 4
27 2020-09-06 71 5
28 2020-09-07 58 6
29 2020-09-08 50 7
30 2020-09-09 54 8
31 2020-09-10 45 9
32 2020-09-11 58 10
33 2020-09-12 48 11
34 2020-09-13 49 12
35 2020-09-14 60 13
36 2020-09-15 41 14
37 2020-09-16 60 15
38 2020-09-17 46 16
39 2020-09-18 40 17
40 2020-09-19 50 18
41 2020-09-20 49 19
42 2020-09-21 57 20
43 2020-09-22 58 21
我怎样才能让 2020-09-01 成为第 1 天(而不是第 22 天)并且 df 中的最后一个日期是第 22 天,而不是第 21 天?一如既往,提前谢谢你。
您可以尝试根据所选日期之后的日期使用 cumsum
。这里的优点是您不需要指定所需的日期数。
df$intv_trend <- cumsum(df$Date >= as.Date("2020-09-01"))
输出
Date Count intv_trend
1 2020-08-11 54 0
2 2020-08-12 42 0
3 2020-08-13 44 0
4 2020-08-14 52 0
5 2020-08-15 51 0
6 2020-08-16 47 0
7 2020-08-17 53 0
8 2020-08-18 45 0
9 2020-08-19 41 0
10 2020-08-20 56 0
11 2020-08-21 45 0
12 2020-08-22 56 0
13 2020-08-23 52 0
14 2020-08-24 57 0
15 2020-08-25 48 0
16 2020-08-26 47 0
17 2020-08-27 52 0
18 2020-08-28 58 0
19 2020-08-29 51 0
20 2020-08-30 41 0
21 2020-08-31 53 0
22 2020-09-01 155 1
23 2020-09-02 123 2
24 2020-09-03 98 3
25 2020-09-04 90 4
26 2020-09-05 84 5
27 2020-09-06 71 6
28 2020-09-07 58 7
29 2020-09-08 50 8
30 2020-09-09 54 9
31 2020-09-10 45 10
32 2020-09-11 58 11
33 2020-09-12 48 12
34 2020-09-13 49 13
35 2020-09-14 60 14
36 2020-09-15 41 15
37 2020-09-16 60 16
38 2020-09-17 46 17
39 2020-09-18 40 18
40 2020-09-19 50 19
41 2020-09-20 49 20
42 2020-09-21 57 21
43 2020-09-22 58 22