小编C. *_*ian的帖子

使用 dplyr 对两个变量进行递归求和

我有两列带有值 a 和 b。我想添加第三列c,即(在第i行)b的0到i的总和加上c的0到(i-1)的总和,乘以a,即

c_i = (sum_i (b) + sum_(i-1) (c) ) * a_i
Run Code Online (Sandbox Code Playgroud)

我试过

data %>%
mutate(
 c = a * (cumsum(b) + lag(cumsum(c), default = 0))
)
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,因为我只是根据目前不存在的 c 值创建 c :

Error: Problem with `mutate()` input `c`.
x object 'c' not found
Run Code Online (Sandbox Code Playgroud)

以前我使用 for 循环处理此类问题。不过,我习惯了dplyr,总有办法。但是,我不明白。

我很感激任何帮助!

编辑:在以前的版本中我是不准确的,因为 a 也是一个向量,而不是一个常数。我在公式里改了

所需的输出:

row 1: 0.5 * (7  + 0 ) =3.5

row 2: 0.3 * (7+1 + 3.5) = 3.45

row 3: 1.0 * (7+1+9 + 3.5+3.45) = 23.95 …
Run Code Online (Sandbox Code Playgroud)

recursion performance r dataframe dplyr

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

使用表名向量组合 R 中的多个表

我有三个数据集(tibble),全部具有相同的列名

A_table <- tibble(col_1 = c(1,2), col_2 = c("a1", "a2"))
B_table <- tibble(col_1 = c(1,4), col_2 = c("b11", "b3"))
C_table <- tibble(col_1 = c(5,9), col_2 = c("c21", "c2"))

tables <- ls(pat = "_table")                  

#doesnt work:
combine <- tables %>% 
  reduce(bind_rows)
Run Code Online (Sandbox Code Playgroud)

组合不起作用,因为表只是包含表名称的列表,而不是真正的表。

组合三个表的简单方法是什么?如何使用模式获取变量表中的表而不仅仅是表名称?

我不想手动绑定它们,例如:

  combine <- A_table %>% 
    bind_rows(B_table) %>% 
    bind_rows(C_table)
Run Code Online (Sandbox Code Playgroud)

因为我还有很多想要合并的列。

我很感激任何建议!谢谢你!

r dplyr

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

标签 统计

dplyr ×2

r ×2

dataframe ×1

performance ×1

recursion ×1