我的代码:
correlation <- function(dtable){
# create the column
dtable[, "correlation"] <- ""
for (row in 1:nrow(dtable)) {
#get the correlation for each row
cor = cor(dtable$wells_per_section[1:row], dtable$section_eur[1:row])
#store the value to the correlation column
correlation = cor
}
}
当我尝试与我的表它返回NA,没有添加到列,我错过了什么?
您的函数没有将cor()
函数的结果分配给correlation
列,并且没有显式返回dtable
。也许你可以重写它,做一些修改,如下所示:
correlation <- function(dtable){
# create the column
dtable[, "correlation"] <- NA
for (row in 1:nrow(dtable)) {
#get the correlation for each row
dtable[row,"correlation"] <- cor(dtable$wells_per_section[1:row], dtable$section_eur[1:row])
}
return(dtable)
}
如果感兴趣,您可以这样实现:
dtable["correlation"] = sapply(1:nrow(dtable),(i) cor(dtable[1:i,1], dtable[1:i,2]))
更新OP现在希望按16行分组单独进行关联。
我认为解决这个问题的方法是使用sort(rep(..., length.out=..))
创建一个分组变量,如下所示,然后通过这个组应用一个简单的函数…
f <- function(w,s) {
sapply(seq_along(w), (i) cor(w[1:i],s[1:i]))
}
dtable %>%
group_by(grp = sort(rep(1:16, length.out=250))) %>%
mutate(correlation = f(wells_per_section,section_eur))