数据帧的下标分配中不允许缺少值?请帮忙。为什么这不起作用?

问题描述 投票:0回答:2
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),])
r
2个回答
0
投票

非常感谢您的答复和帮助。

finaldf8 ['nc']用于在数据框finaldf8中创建一个新列。


0
投票

您始终如一,您的代码将更容易阅读。有时不要使用[,'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)
© www.soinside.com 2019 - 2024. All rights reserved.