我想在其他列中基于NAs创建另一列。下面是一个例子:根据其他列中的NA值创建新列
df <- replicate(5,rnorm(4))
df[1,3:4] <- NA
df[2:3,1:2] <- NA
colnames(df)[1:5] <- c("One","Two","Three","Four","Five")
df
One Two Three Four Five
[1,] 0.12 -0.38 NA NA 0.10
[2,] NA NA -0.19 -0.14 -1.57
[3,] NA NA 1.01 0.22 0.27
[4,] 0.53 0.71 -0.86 -0.33 -1.01
每一列具有固定的分配的权重:
weightc1 <- 0.1
weightc2 <- 0.3
weightc3 <- 0.2
weightc4 <- 0.35
weightc5 <- 0.05`
欲让在NAS中的每一列等于对应的列权重。例如。第1列中的NA为0.1。
然后,我想创建另一列(称之为Six),它等于NA权重的总和。例如,第6列的第一行应该是0.55(0.2 + 0.35)。最后一行,它没有来港,等于0柱应该是这样的:
df2 <- cbind(df, Six = c("0.55","0.4","0.4","0"))
df2
One Two Three Four Five Six
[1,] "0.123127305724018" "-0.378163368890999" NA NA "0.100592613978267" "0.55"
[2,] NA NA "-0.190601356688205" "-0.136015883223294" "-1.56573577576604" "0.4"
[3,] NA NA "1.01441506421936" "0.220154629517149" "0.273740027540685" "0.4"
[4,] "0.529632731861426" "0.709285638700681" "-0.864741163519668" "-0.327865814162575" "-1.01298096772074" "0"
我试图IfesleSix < - ifelse(DF $一个== NA, “weightc1”, “”),它用NAs替换第一列中的所有数字。我知道在应用求和函数之前我需要先解决这个问题(或者是否有解决方法?)。请指教。谢谢!
如果创建一个随机过程的示例(即'rnorm' ..)请使用'set.seed '重现性 –