如何在 R 中创建序列?
How can I create a sequence in R?
我知道 R 中有一个函数可以创建一个序列,但并不完全符合我的要求。
我有一个数据框,每次我 运行 我的代码时它的大小都会改变。这是我的数据框
pais cum_cases time_cases
MX 1 1
MX 4 2
MX 5 6
....
我想将 cum_cases 列的值替换为值加倍的系列。
例子
我真的不关心 cum_Cases 列中的值是什么我想用特定值开始的双精度值替换。
例如,如果我想从值 **10 开始,所有列的下一个值都必须替换为
cum_cases
10
20
40
80
160
320
... Until the last row of my data frame
示例 2。
x -> 6
cum_cases
6
12
24
48
96
192
... Until the last row of my data frame
您需要将起始值(第一行)乘以 2 的 rowid - 1
次方,因为该值每行都会翻倍。使用 dplyr
执行此操作的一种方法是:
df <- data.frame(time_cases = c(1, 2, 6, 10, 11, 15), cum_cases = 6)
library(dplyr)
df %>%
tibble::rowid_to_column() %>%
mutate(cum_cases = cum_cases[1] * 2 ^ (rowid - 1)) %>%
select(-rowid)
time_cases cum_cases
1 1 6
2 2 12
3 6 24
4 10 48
5 11 96
6 15 192
我先用tibble::rowid_to_column()
创建了一个rowid
,然后又删除了。
您可以将 cumprod
与 rep
结合使用以产生加倍序列。
(x$cum_cases <- 10 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1] 10 20 40
(x$cum_cases <- 6 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1] 6 12 24
数据:
x <- data.frame(pais="MX", cum_cases=c(1,4,5), time_cases=c(1,2,6))
我知道 R 中有一个函数可以创建一个序列,但并不完全符合我的要求。
我有一个数据框,每次我 运行 我的代码时它的大小都会改变。这是我的数据框
pais cum_cases time_cases
MX 1 1
MX 4 2
MX 5 6
....
我想将 cum_cases 列的值替换为值加倍的系列。 例子 我真的不关心 cum_Cases 列中的值是什么我想用特定值开始的双精度值替换。 例如,如果我想从值 **10 开始,所有列的下一个值都必须替换为
cum_cases
10
20
40
80
160
320
... Until the last row of my data frame
示例 2。 x -> 6
cum_cases
6
12
24
48
96
192
... Until the last row of my data frame
您需要将起始值(第一行)乘以 2 的 rowid - 1
次方,因为该值每行都会翻倍。使用 dplyr
执行此操作的一种方法是:
df <- data.frame(time_cases = c(1, 2, 6, 10, 11, 15), cum_cases = 6)
library(dplyr)
df %>%
tibble::rowid_to_column() %>%
mutate(cum_cases = cum_cases[1] * 2 ^ (rowid - 1)) %>%
select(-rowid)
time_cases cum_cases
1 1 6
2 2 12
3 6 24
4 10 48
5 11 96
6 15 192
我先用tibble::rowid_to_column()
创建了一个rowid
,然后又删除了。
您可以将 cumprod
与 rep
结合使用以产生加倍序列。
(x$cum_cases <- 10 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1] 10 20 40
(x$cum_cases <- 6 * cumprod(c(1, rep(2, nrow(x)-1))))
#[1] 6 12 24
数据:
x <- data.frame(pais="MX", cum_cases=c(1,4,5), time_cases=c(1,2,6))