我有小时价值.我想计算自上一次非零以来该值连续多少小时.对于电子表格或循环来说,这是一项简单的工作,但我希望有一个快速的矢量化单行程来完成任务.
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) 我有一个面板数据集,我想为其创建一个计数器,该计数器随着面板中的每个步骤而增加,但只要发生某些情况就会重新启动.就我而言,我正在使用国家年度数据,并希望计算事件之间的年份.这是一个玩具数据集,其中包含我真实的主要特征:
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)
我已经尝试使用getanID从splitstackshape和一些变化if和ifelse …
我有以下数据帧
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中的值为零.我有一个这样的向量:
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)
这应该是直截了当但我无法弄清楚如何生成序列,任何建议?谢谢,
我正在对输出为 -1、0 或 1 的财务信号进行编码分析,并试图跟踪自信号更改以来已经过去了多少天以生成每日分析报告。
例如:如果我的 df 的尾部是 0 1 0 0 0 0 ...
最终结果目标是一个向量,如:0 0 0 1 2 3
我该怎么办?我的第一个想法是某种 for 循环,但我只知道如何用 Python 编写它们。