R 如何将求和函数应用于一列的所有行
我想在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
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)