从差异向量为列创建新值
Creating New Values for Column from Vector of Differences
所以我有一个日期数据框和一个响应列,我有一个差异向量来显示我想添加到响应列的一组新值随时间的变化。我如何进行某种矩阵减法以从向量中获取值并将它们与列中的现有值相差以获得新值?
数据框是这样设置的:
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
等等...
以下获取您的响应向量的累积总和,但从 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
一种可能是使用cumsum
函数:
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
)是一种很好的做法。
所以我有一个日期数据框和一个响应列,我有一个差异向量来显示我想添加到响应列的一组新值随时间的变化。我如何进行某种矩阵减法以从向量中获取值并将它们与列中的现有值相差以获得新值?
数据框是这样设置的:
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
等等...
以下获取您的响应向量的累积总和,但从 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
一种可能是使用cumsum
函数:
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
)是一种很好的做法。