相关疑难解决方法(0)

在特定值的连续运行中创建计数器

我有小时价值.我想计算自上一次非零以来该值连续多少小时.对于电子表格或循环来说,这是一项简单的工作,但我希望有一个快速的矢量化单行程来完成任务.

x <- c(1, 0, 1, 0, 0, 0, 1, 1, 0, 0)
df <- data.frame(x, zcount = NA)

df$zcount[1] <- ifelse(df$x[1] == 0, 1, 0)
for(i in 2:nrow(df)) 
  df$zcount[i] <- ifelse(df$x[i] == 0, df$zcount[i - 1] + 1, 0)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

R> df
   x zcount
1  1      0
2  0      1
3  1      0
4  0      1
5  0      2
6  0      3
7  1      0
8  1      0
9  0      1
10 0      2
Run Code Online (Sandbox Code Playgroud)

r

17
推荐指数
4
解决办法
1万
查看次数

创建在面板数据组内的条件下重新启动的顺序计数器

我有一个面板数据集,我想为其创建一个计数器,该计数器随着面板中的每个步骤而增加,但只要发生某些情况就会重新启动.就我而言,我正在使用国家年度数据,并希望计算事件之间的年份.这是一个玩具数据集,其中包含我真实的主要特征:

df <- data.frame(country = rep(c("A","B"), each=5), year=rep(2000:2004, times=2), event=c(0,0,1,0,0,1,0,0,1,0), stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个df$event在每个国家的一系列观察中都有关键的计数器.当我们开始观察每个国家时,时钟从1开始; 随着每年的过去,它增加1; 并且它会在1时重新启动df$event==1.所需的输出是这样的:

   country year event clock
1        A 2000     0     1
2        A 2001     0     2
3        A 2002     1     1
4        A 2003     0     2
5        A 2004     0     3
6        B 2000     1     1
7        B 2001     0     2
8        B 2002     0     3
9        B 2003     1     1
10       B 2004     0     2
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用getanIDsplitstackshape和一些变化ififelse …

r time-series dplyr

5
推荐指数
1
解决办法
3133
查看次数

Cumsum重置为特定值

我有以下数据帧

    x          y    count
1   1 2018-02-24 4.031540
2   2 2018-02-25 5.244303
3   3 2018-02-26 5.441465
4  NA 2018-02-27 4.164104
5   5 2018-02-28 5.172919
6   6 2018-03-01 5.591410
7   7 2018-03-02 4.691716
8   8 2018-03-03 5.465360
9   9 2018-03-04 3.269378
10 NA 2018-03-05 5.300679
11 11 2018-03-06 5.489664
12 12 2018-03-07 4.423334
13 13 2018-03-08 3.808764
14 14 2018-03-09 6.450136
15 15 2018-03-10 5.541785
16 16 2018-03-11 4.762889
17 17 2018-03-12 5.511649
18 18 2018-03-13 6.795386
19 19 2018-03-14 6.615762 …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
1
解决办法
460
查看次数

从R中的零开始按顺序添加值

嗨我正在尝试在向量中添加值,因为R中的值为零.我有一个这样的向量:

wdnew
 [1] 1 0 0 1 1 0 0 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的向量来计算自零值以来的迭代次数或位数.如果我做得恰到好处,我会得到一个这样的矢量:

wdseq
 [1] 1 0 0 1 2 0 0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

这应该是直截了当但我无法弄清楚如何生成序列,任何建议?谢谢,

r sum sequence

3
推荐指数
1
解决办法
222
查看次数

自从 R 中的列向量中的值发生变化以来,如何计算多少行?

我正在对输出为 -1、0 或 1 的财务信号进行编码分析,并试图跟踪自信号更改以来已经过去了多少天以生成每日分析报告。

例如:如果我的 df 的尾部是 0 1 0 0 0 0 ...

最终结果目标是一个向量,如:0 0 0 1 2 3

我该怎么办?我的第一个想法是某种 for 循环,但我只知道如何用 Python 编写它们。

r

3
推荐指数
1
解决办法
96
查看次数

标签 统计

r ×5

dplyr ×1

sequence ×1

sum ×1

time-series ×1