从差异向量创建列的新值

问题描述 投票:0回答:2

所以我有一个日期和响应列的数据框,我有一个差异向量,以显示我想要添加到响应列的一组新值随时间的变化。如何进行某种矩阵减法以从矢量中获取值并将它们与列中的现有值区分开以获得新值?

数据框的设置如下:

data <- data.frame(seq(from = 2001, to = 2020, 1))
data$y <- (runif(20, 1, 10))
data$y[11:20] <- NA
colnames(data)[1] <- "Year" 

差异向量看起来像这样:

vector <- runif(10, -1, 1)

所以期望的输出看起来像这样:

Year    y
2011    y10+vector1 = y11
2012    y11+vector2 = y12
2013    y12+vector3 = y13

等等...

r vector subtraction
2个回答
1
投票

一种可能性是使用cumsumfunction:

set.seed(1)
data <- data.frame(seq(2001, 2020, 1))
data$y <- (runif(20, 1, 10))
data$y[11:20] <- NA
colnames(data)[1] <- "Year" 

myvector <- runif(10, -1, 1)
data$y[11:20] <- data$y[10] + cumsum(myvector)

此外,在使用随机数时,最好设置随机种子(使用set.seed)。


2
投票

以下内容获取了您的响应向量的累积总和,但是从2010年的y值开始

responses <- c(data$y[data$Year == 2010], vector)

new_data <- data.frame(year = 2010:2020,
                       y = cumsum(responses))

   year        y
1  2010 3.263457
2  2011 2.891375
3  2012 3.567775
4  2013 4.330650
5  2014 4.972721
6  2015 5.008574
7  2016 5.306517
8  2017 5.304533
9  2018 5.066068
10 2019 4.688454
11 2020 4.851382
© www.soinside.com 2019 - 2024. All rights reserved.