标签: cumsum

在R的Cumsum传染媒介的

当超过阈值时,如何使用cumsum返回索引?

v <- c(1,5,7,9,10,14,16,17)
Threshold <- 10
Run Code Online (Sandbox Code Playgroud)

该函数将返回3,因为累积和将仅大于10,这提供了e索引3作为结果.

r dataframe cumsum

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

矢量的连续总和

这是继前一个问题一个.在该问题中,建议用于rollapply计算1st, 2nd, 3rd向量条目的总和; 然后2nd, 3rd, 4th,等等.

我的问题是如何计算总和1st, 2nd and 3rd; 那么4th, 5th and 6th.也就是说,滚动没有重叠.这可以轻松完成吗?

r vector cumsum rollapply

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

如何创建一个新变量,它是另一个二进制变量的条件累积和?

我正在清理一些眼动追踪数据,正如预期的那样,它是凌乱的.我坚持一个初步的步骤,我会尽力描述.解决方案可能非常简单.

我有两个变量,一个是二元(x1),另一个是连续的(x2),例如:

dat <- data.frame(x1 = c(0,1,1,0,1,1,1,0,1,1), 
                  x2 = c(22,23,44,25,36,37,28,19,30,41))
Run Code Online (Sandbox Code Playgroud)

我需要创建一个新的变量(x3),它是x2的累积和,适用于x1等于1的连续情况.最终产品看起来像这样:

dat <- data.frame(x1 = c(0,1,1,0,1,1,1,0,1,1), 
                  x2 = c(22,23,44,25,36,37,28,19,30,41), 
                  x3 = c(0, 23, 67, 0, 36, 73, 101, 0, 30, 71))
Run Code Online (Sandbox Code Playgroud)

换句话说,这是一个cumsum()x2每个0后"复位" x1.

conditional r cumsum

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

Pandas 边走边向前填充并求和

我有一个稀疏的数据框,包括购买或出售库存的日期,如下所示:

Date         Inventory
2017-01-01       10 
2017-01-05       -5
2017-01-07       15
2017-01-09      -20
Run Code Online (Sandbox Code Playgroud)

我想解决的第一步是添加其他日期。我知道您可以使用重新采样,但只需突出显示这部分,以防它对下一个更困难的部分产生影响。如下:

Date         Inventory
2017-01-01       10
2017-01-02       NaN
2017-01-03       NaN
2017-01-04       NaN
2017-01-05       -5
2017-01-06       NaN
2017-01-07       15
2017-01-08       NaN
2017-01-09      -20
Run Code Online (Sandbox Code Playgroud)

最后一步是让它向前填充 NaN,除非它遇到一个新值,该值会添加到上面行的当前值中,以便最终的数据帧如下所示:

Date         Inventory
2017-01-01       10
2017-01-02       10
2017-01-03       10
2017-01-04       10
2017-01-05       5
2017-01-06       5
2017-01-07       20
2017-01-08       20
2017-01-09       0
2017-01-10       0
Run Code Online (Sandbox Code Playgroud)

我正在尝试采用 pythonic 方法来解决此问题,而不是基于循环的方法,因为那样会非常慢。

该示例也适用于具有多列的表,如下所示:

Date         InventoryA       InventoryB
2017-01-01       10              NaN
2017-01-02       NaN             NaN
2017-01-03       NaN              5
2017-01-04       NaN              5
2017-01-05       -5              NaN
2017-01-06       NaN …
Run Code Online (Sandbox Code Playgroud)

python date pandas cumsum

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

ggplot2 中的累积图

样本数据

dat <- data.frame(year = as.factor(rep(c(2012:2015),each = 6)),id.2wk = rep(c(18,19,20,21,22,23),times = 4), 
                    value = c(1.8,15.6,32.9,27.5,19.6,2.6,1,8,42,35,11,3,2,7,12,47,26,7,2,13,24,46,12,4))

with(dat, plot(id.2wk[year == 2012], cumsum(value[year == 2012]), type = "b"))
with(dat, points(id.2wk[year == 2013], cumsum(value[year == 2013]), type = "b"))
with(dat, points(id.2wk[year == 2014], cumsum(value[year == 2014]), type = "b"))
with(dat, points(id.2wk[year == 2015], cumsum(value[year == 2015]), type = "b"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想使用 ggplot2 创建相同的图。我这样做了:

  ggplot(dat, aes(x = id.2wk, y = cumsum(value), colour = factor(year))) + 
  geom_line(size = 1)+
  geom_point() 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这里出了什么问题?

plot r ggplot2 cumsum

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

python pandas 创建数据框连胜

我需要创建“连胜”专栏。例如,我有如下数据。具有最大值的列是获胜者。

AA      BB      CC
5.95    5.95    0
0       -2.35   2.35
-0.6    -0.6    -0.6
-2.35   2.35    0
-1.6    1.6     -1.6
-1.25   1.25    1.25
1.85    0       -1.85
1.3     0       -1.3
-1.7    1.7     -1.7
0       0.25    0.25
Run Code Online (Sandbox Code Playgroud)

并需要创建“连胜;连续获胜多少次”列,如下所示。

AA      BB      CC      CW_AA   CW_BB   CW_CC
5.95    5.95    0       1       1       0
0       -2.35   2.35    0       0       1
-0.6    -0.6    -0.6    1       1       2
-2.35   2.35    0       0       2       0
-1.6    1.6     -1.6    0       3       0
-1.25   1.25    1.25    0       4       1
1.85    0       -1.85 …
Run Code Online (Sandbox Code Playgroud)

python python-itertools pandas cumsum pandas-groupby

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

Pandas:dataframe cumsum,如果其他列为false则重置

我有一个包含2列的数据框,这里的目标很简单; 如果行列设置为False,则重置df.cumsum();

DF

      value      condition
0       1            1
1       2            1
2       3            1
3       4            0
4       5            1
Run Code Online (Sandbox Code Playgroud)

想要的结果如下:

DF

      value      condition
0       1            1
1       3            1
2       6            1
3       4            0
4       9            1
Run Code Online (Sandbox Code Playgroud)

如果我循环数据帧,如本文所述Python pandas cumsum()重置后达到最大值 我可以实现想要的结果,但我正在寻找一个更加矢量化的方式使用pandas标准函数

numpy dataframe pandas cumsum

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

返回使用.max的位置向量

  x <- seq(1:100)
  y <- 30
Run Code Online (Sandbox Code Playgroud)

如果我想确定x> y的累积和的位置

  which.max(cumsum(x) >= y)
  [1] 9 # 
Run Code Online (Sandbox Code Playgroud)

相反,如果y是一个向量,即我想为y的每个元素返回x的位置

  y <- c(30, 60, 80, 90)
  which.max(cumsum(x) >= y)
  [1] 9
Run Code Online (Sandbox Code Playgroud)

为什么不重新调整位置向量?

r which cumsum

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

当R中满足条件时重置累积和

所以我现在有一个看起来像这样的表:

data_wrong <- data.table(State = c("NY", "NY", "NY", "NY", "PA", "PA", "PA", 
"NJ", "NJ", "NJ"), Year = c("1973", "1974", "1975", "2005", "1992", "1993", 
"2001", "1930", "1931", "1932"), Consecutive_Yrs = c(1,2,3,1,1,6,1,1,9,10))
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样:

data <- data.table(State = c("NY", "NY", "NY", "NY", "PA", "PA", "PA", "NJ", 
"NJ", "NJ"), Year = c("1973", "1974", "1975", "2005", "1992", "1993", 
"2001", "1930", "1931", "1932"), Consecutive_Yrs = c(1,2,3,1,1,2,1,1,2,3))
Run Code Online (Sandbox Code Playgroud)

这是我现在用来获取我的表的代码:

data$diff <- NA

data <- data %>%
  group_by(State) %>%
  arrange(State) %>%
  mutate(diff = Year - lag(Year, default = first(Year))) …
Run Code Online (Sandbox Code Playgroud)

r sum reset cumsum

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

满足条件时,滞后向量加 1,同时重置为 0

我有一系列治疗,每天一次(二进制),比如:

trt <- c(0, 0, 1, 0, 0, 0, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)

我想创建一个向量days_since,即:

  1. 是 NA 直到第一次治疗。
  2. 是 0 哪里trt是 1
  3. 计算自上次治疗以来的天数

所以,输出days_since应该是:

days_since <- c(NA, NA, 0, 1, 2, 3, 0, 1, 2)
Run Code Online (Sandbox Code Playgroud)

我将如何在 R 中做到这一点?为了得到days_since,我基本上需要滞后一个元素并加 1,但每次原始向量 ( trt) 为 1时都重置。如果这在没有 for 循环的情况下可行,那将是理想的,但不是绝对必要的。

r lag cumsum

1
推荐指数
2
解决办法
53
查看次数

为什么 cumsum 不适用于符号向量?

我写了一个涉及cumsum符号向量的小八度脚本,我希望它可以工作,但不幸的是,它没有。这是代码:

pkg load symbolic
n = 3;
syms q x
q = sym('q', [n 1]);
x = sym('x', [n 1]);
cumsum(q - x)
Run Code Online (Sandbox Code Playgroud)

我得到的不是预期的结果:

错误:cumsum:错误的类型参数“类”

为什么会发生这种情况?它可以与 Matlab Symbolic Toolbox 一起使用吗?(不幸的是,我没有它,所以我无法测试。)

symbolic-math octave cumsum

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

每次值为零时 pandas 都会重新启动 cumsum

所以我有一个系列,我想要 cumsum,但每次我达到 0 时都重新开始,如下所示:

原始 想要的结果
0 0 0
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 1 6
7 0 0
8 1 1
9 1 2
10 1 3
11 0 0
12 1 1
13 1 2
14 1 3
15 1 4
16 1 5
17 号 1 6

有任何想法吗?(熊猫、纯蟒蛇、其他)

python pandas cumsum

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

R data.table累积和函数

我创建了以下可重现的示例:

library(data.table)
Col_1 <- 0.05
Col_2 <- c( "B", "A", "C", "B", "C", "A", "C", "B", "B", "A" )
Col_3 <- 1000
Col_4 <- ""
data <- data.frame( Col_1, Col_2, Col_3, Col_4 ) 
mydata.table <- as.data.table( data )[ , list( Col_1, Col_2, Col_3, Col_4 ) ]
Col1 <- "Col_1"; Col2 <- "Col_2"; Col3 <- "Col_3"; Col4 <- "Col_4"
mydata.table[, (Col4) := ifelse( get( Col2 ) == "A" , get( Col1 ) * get( Col3 ), "0" ) ]
mydata.table[ , …
Run Code Online (Sandbox Code Playgroud)

r cumsum data.table

0
推荐指数
1
解决办法
1635
查看次数