【发布时间】:2019-06-24 08:26:08
【问题描述】:
我有列名称为 1990.x ..2000.x、1990.y、..2000.y 的数据框。我想用对应年份的 .y 值替换以“.x”结尾的变量中的 NA。它是公式 1990.x = 0.5+0.2*log(1990.y) 的逐元素计算
我想做这样的事情:
for (v in colnames(df[ ,grepl(".x",names(df))])) {
print(v)
df$v <- ifelse(is.na(df$v), ols$coefficients[1]+ols$coefficients[2]*log(df$gsub(".x",".y",v)), df$v)
}
但这不起作用。我怎样才能使这个循环工作,或者有没有更好的解决方案? 谢谢
【问题讨论】:
-
这将有助于提供部分或全部数据框,使用 例如
dput(df)。我还想知道 NA 是否是由于合并或加入而产生的,并且可以避免。 -
您可以避免循环并执行
x_cols <- grep("x$", names(dat)); y_cols <- grep("y$", names(dat)); dat[x_cols][is.na(dat[x_cols])] <- 0.5 + 0.2*log(dat[y_cols][is.na(dat[x_cols])]); dat