R 如何将求和函数应用于一列的所有行

R 如何将求和函数应用于一列的所有行,r,R,我想在R中运行以下程序 我的数据框如下所示: Y N s 1 100 1 1 2 101 0.95 2 3 110 0.9025 3 4 112 0.8573 4 5 114 0.8145 5 6 120 0.7737 6 其中N是公式中的术语beta^s-1,beta=1-0.05(=贴现系数) 公式的结果应在新列中输入my dataframe。这个新列的第一行可以用k=3计算如下 mydata$Ydsc<- crosspr

我想在R中运行以下程序

我的数据框如下所示:

   Y   N       s
1 100  1       1
2 101  0.95    2
3 110  0.9025  3
4 112  0.8573  4
5 114  0.8145  5
6 120  0.7737  6
其中N是公式中的术语beta^s-1,beta=1-0.05(=贴现系数)

公式的结果应在新列中输入my dataframe。这个新列的第一行可以用k=3计算如下

mydata$Ydsc<- crossprod(mydata$N[1:3],mydata$Y[2:4])/sum(mydata$N[1:3])

mydata$Ydsc也许您希望在结尾的注释中重复定义
mydata
fun
将矩阵
x
作为输入,其第一列为
Y
,第二列为
N
。它将当前行和
Y
的连续行作为
k
行的总数,将
N
的下一行和连续行作为
k
行的总数,并将
N
的行进行标准化,将其相乘和求和。它将其应用于输入的每一行

library(zoo)

k <- 3
k1 <- k+1
fun <- function(x) sum(prop.table(x[-k1, 2]) * x[-1, 1])
rollapply(mydata, k1, fun, by.column = FALSE, align = "left", fill = NA)
## [1] 107.4777 111.9316 115.1972       NA       NA       NA

行你能修复
乐趣吗
没有任何意义你的预期输出是什么?这正是我需要的。谢谢你的精确回答!
fun <- function(x,y) {
  crossprod{x[1:3],y)/sum(x[1:3])
  x <- mydata$N
  y <- mydata$Y
}
Ydsc<-apply(mydata[,1],1,fun)
library(zoo)

k <- 3
k1 <- k+1
fun <- function(x) sum(prop.table(x[-k1, 2]) * x[-1, 1])
rollapply(mydata, k1, fun, by.column = FALSE, align = "left", fill = NA)
## [1] 107.4777 111.9316 115.1972       NA       NA       NA
fun <- function(x) {
  Y <- x[, 1]
  N <- x[, 2]
  sum(prop.table(N[-k1]) * Y[-1])
}
Lines <- "   Y   N       s
1 100  1       1
2 101  0.95    2
3 110  0.9025  3
4 112  0.8573  4
5 114  0.8145  5
6 120  0.7737  6"
mydata <- read.table(text = Lines)