考虑以下数据集,其中:
-
变量1-7(
var1-7
)是五只蜥蜴(indvA-E
)的线性测量值; -
变量8(
var8
)是每个蜥蜴的变量数量,其中包含不等于NA的值; -
变量9(
var9
)是变量1-7的总和;
data <- data.frame(var1 = c(0.13,0.08,0.05,0.11,0.09), var2 = c(0.17,0.09,0.07,0.15,0.13), var3 = c(0.19,0.11,0.19,0.17,0.14), var4 = c(NA,0.11,0.31,0.38,0.17), var5 = c(NA,NA,0.39,0.41,0.19), var6 = c(NA,NA,0.40,0.75,NA), var7 = c(NA,NA,0.45,0.79,NA)) row.names(data) <- c("indv.A","indv.B","indv.C","indv.D","indv.E") data[,"var8"] <- rowSums(!is.na(data)) data[,"var9"] <- rowSums(data[,1:7], na.rm = TRUE) data # var1 var2 var3 var4 var5 var6 var7 var8 var9 # indv.A 0.13 0.17 0.19 NA NA NA NA 3 0.49 # indv.B 0.08 0.09 0.11 0.11 NA NA NA 4 0.39 # indv.C 0.05 0.07 0.19 0.31 0.39 0.40 0.45 7 1.86 # indv.D 0.11 0.15 0.17 0.38 0.41 0.75 0.79 7 2.76 # indv.E 0.09 0.13 0.14 0.17 0.19 NA NA 5 0.72
我想创建一个名为var10
的新变量,它可以被描述为“var8除以(var7减去变量1-7的最后一个非NA值)”或“var8除变量1-7的所有非NA值”。
对于上述数据集,此新变量将包含:
var1-9 var10 indv.A [...] 10.00 indv.B [...] 14.29 indv.C [...] 4.96 indv.D [...] 3.55 indv.E [...] 9.43
我只是不知道如何在R中写出公式来获得这个变量。任何帮助都将不胜感激。