考虑以下数据集,其中:
- 变量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
的新变量,它可以描述为“* var 8除以(var 7减去变量1-7中最后一个非NA值)”或“ var 8除以变量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中写出公式来得到这个变量。任何帮助将不胜感激。
1条答案
按热度按时间oxf4rvwz1#
**1)**如果需要var1到var7的最后一个非NA值,可以执行以下操作
**2)**对于第二个病例,跳过最后一个非NA