names(finaldf8) <- tolower(names(finaldf8)) #to put all variable names in lower case
finaldf8['nc'] <- NA
finaldf8['nc'][(finaldf8$pretestscore < finaldf8$posttestscore),] <- (finaldf8['nc'][(finaldf8$pretestscore < finaldf8$posttestscore),]-
finaldf8['nc'][(finaldf8$pretestscore < finaldf8$posttestscore),])/(1-
finaldf8['nc'][(finaldf8$pretestscore < finaldf8$posttestscore),])
finaldf8['nc'][(finaldf8$pretestscore == finaldf8$posttestscore),] <- 0
finaldf8['nc'][(finaldf8$pretestscore > finaldf8$posttestscore),] <- (finaldf8['nc'][(finaldf8$pretestscore > finaldf8$posttestscore),]-finaldf8['nc'][(finaldf8$pretestscore > finaldf8$posttestscore),])/(finaldf8['nc'][(finaldf8$pretestscore > finaldf8$posttestscore),])
非常感谢您的答复和帮助。
finaldf8 ['nc']用于在数据框finaldf8中创建一个新列。
您始终如一,您的代码将更容易阅读。有时不要使用[,'na'],其他时候不要使用$ na。
# Create variable and set to NA
finaldf8$nc <- NA
# Create logical variables
preLTpost <- finaldf8$pretestscore < finaldf8$posttestscore
preEQpost <- finaldf8$pretestscore == finaldf8$posttestscore
preGTpost <- finaldf8$pretestscore > finaldf8$posttestscore
您的下一行不执行任何操作,因为finaldf8$nc
为NA,所以结果为NA。下一行将finaldf8 $ nc的某些值设置为0(如果preEQpost为TRUE),而最后一行则不执行任何操作,因为您只是在使用NA。可能要在finaldf8中使用其他列来计算nc
的值。您可能想要类似的东西
finaldf8$nc <- ifelse(preLTpost, compute something, ifelse(preEQpost, 0, compute something else)