创建一个新列并在r中添加值



我的代码:

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))

相关内容

  • 没有找到相关文章

最新更新