相关疑难解决方法(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万
查看次数

如何根据 R 中另一列中的值增加新列

我想基于第三个专栏创建两个新专栏。这两列应该具有两种不同类型的递增值。

\n

让\xc2\xb4s以以下数据集为例:

\n
events <- data.frame(Frame = seq(from = 1001, to = 1033, by = 1),\n                     Value = c(2.05, 0, 2.26, 2.38, 0, 0, 2.88, 0.32, 0.85, 2.85, 2.09, 0, 0, 0, 1.11, 0, 0,\n                               0, 2.46, 2.85, 0, 0, 0.38, 1.91, 0, 0, 0, 2.23, 0, 0.48, 1.83, 0.23, 1.49))\n
Run Code Online (Sandbox Code Playgroud)\n

我想创建:

\n
    \n
  • 每当“Value”列中存在以 0 开头的序列时,名为“Number”的列就会递增,并且
  • \n
  • 每当“值”列中出现新的 0 序列时,称为“持续时间”的列就从 1 开始,并且只要 0 序列继续存在,就以 1 递增。
  • \n
\n

理想情况下,最终的数据框应该是这样的:

\n
events_final <- data.frame(Frame = seq(from = 1001, …
Run Code Online (Sandbox Code Playgroud)

excel r

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

标签 统计

r ×2

excel ×1