小编nsy*_*mms的帖子

具有复位条件的R累积和

我在data.frame中有一个数字向量,如下所示.

df <- data.frame(a = c(1,2,3,4,2,3,4,5,8,9,10,1,2,1))
Run Code Online (Sandbox Code Playgroud)

我需要创建一个新列,它提供比其前任更大的条目的运行计数.生成的列向量应为:

0,1,2,3,0,1,2,3,4,5,6,0,1,0
Run Code Online (Sandbox Code Playgroud)

我的尝试是创建一个diffs的"flag"列,以便在值更大时进行标记.

df$flag <- c(0,diff(df$a)>0)
> df$flag
 [1] 0 1 1 1 0 1 1 1 1 1 1 0 1 0
Run Code Online (Sandbox Code Playgroud)

然后我可以应用一些dplyr组/ sum魔法几乎得到正确的答案,除了当flag == 0时总和没有重置:

df %>% group_by(flag) %>% mutate(run=cumsum(flag))

    a flag run
1   1    0   0
2   2    1   1
3   3    1   2
4   4    1   3
5   2    0   0
6   3    1   4
7   4    1   5
8   5    1   6
9   8    1   7
10  9    1 …
Run Code Online (Sandbox Code Playgroud)

r cumulative-sum dplyr

4
推荐指数
2
解决办法
6736
查看次数

数据表因子的%%运算符行为?

我似乎无法让%in%运算符表现为数据表因子列.我知道我可能错过了一些数据表的秘密语法,但是我找不到它......我已经搜遍了所有.

这是一个很好的例子来说明我的痛苦.当然,简单的答案是使用数据框,但我有一个大数据集,可以从数据表的某些功能中受益.

> a <- data.table(c1=factor(c(1,2,3)))
> a
   c1
1:  1
2:  2
3:  3

> '2' %in% a[,1,with=F]
[1] FALSE

> 2 %in% a[,1,with=F]
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

它的工作方式与我期望的数据帧一样......

> b <- data.frame(c1=factor(c(1,2,3)))
> '2' %in% b[,1]
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏....

r data.table

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

标签 统计

r ×2

cumulative-sum ×1

data.table ×1

dplyr ×1