使用%in%运算符在R中重新编码变量以避免NAs

使用%in%运算符在R中重新编码变量以避免NAs,r,R,我正在工作中为一个心理测量工具打分,想重新编码一些变量。基本上,每个问题有五个可能的答案,分别为0到4。这就是它们如何被编码到我们的数据库中的,所以我不需要做任何事情,除了对它们求和。然而,有三个问题的分数是相反的(因此,当有人回答0时,我们将其记为4)。因此,我正在“扭转”这些局面 数据框基本上如下所示: studyid timepoint date inst_q01 inst_q02 ... inst_q20 1 2 1995-0

我正在工作中为一个心理测量工具打分,想重新编码一些变量。基本上,每个问题有五个可能的答案,分别为0到4。这就是它们如何被编码到我们的数据库中的,所以我不需要做任何事情,除了对它们求和。然而,有三个问题的分数是相反的(因此,当有人回答0时,我们将其记为4)。因此,我正在“扭转”这些局面

数据框基本上如下所示:

studyid  timepoint      date      inst_q01  inst_q02  ...  inst_q20
   1         2       1995-03-13       0         2     ...      4
   2         2       1995-06-15       1         3     ...      4
这是我到目前为止所做的

# Survey Processing
# Find missing values (-9) and confusions (-1), and sum them
project_f03$inst_nmiss <- rowSums(project_f03[,4:23]==-9)
project_f03$inst_nconfuse <- rowSums(project_f03[,4:23]==-1)
project_f03$inst_nmisstot <- project_f03$inst_nmiss + project_f03$inst_nconfuse

# Recode any missing values into NAs
for(x in 4:23) {project_f03[project_f03[,x]==-9 | project_f03[,x]==-1,x] <- NA}
rm(x)
测量处理 #找到缺失值(-9)和混淆值(-1),然后求和
project\u f03$inst\u nmiss它不会回答您的问题,但应该解决您的问题:

cols <- c(3,11,16)+3
project_f03[, cols] <- abs(project_f03[, cols]-4)
## or a lot of easier (as @TylerRinker suggested):
project_f03[, cols] <- max(project_f03[, cols]) - project_f03[, cols]

cols简单的答案是在%
中使用
%不存在黑洞。但是,如果我只想放弃
NA
值,我会使用
which
project_f03[which(project_f03[,x]==4),x]我还没有完全阅读你的文章,但我看到了相反的分数。我会这样做(如果是错的,忽略;如果是对的,告诉我,我会发布答案)。对于一个专栏,请使用
(max(x)+1)-x
,例如:
x这是一个有用的想法,我会利用它(尽管我认为它不像下面的另一个答案那样直观),但它并不能真正回答问题。不过还是有帮助的!把它作为一个答案,我肯定会投赞成票。我认为如果你在你的帖子中删掉一些多余的东西,你会得到更好的回复。可能会显示一个示例数据帧(可能是8行)和一个您希望发生的示例输出。除此之外,我们更多的是猜测你拥有什么以及你想要什么。IMHO,比你建议的一切更好的做法是:
project_f03[,x]+1,因为它很有用,但它本身并不能真正回答问题。不过还是很好,谢谢!我看到的是:
警告消息:在max(I)中:max没有未丢失的参数;返回-Inf
我在尝试赋值时没有得到错误:
a返回并查看我运行的代码,我发现其中有一个不相关的错误。我将很快删除我的评论,因为它们是不正确的。
cols <- c(3,11,16)+3
project_f03[, cols] <- abs(project_f03[, cols]-4)
## or a lot of easier (as @TylerRinker suggested):
project_f03[, cols] <- max(project_f03[, cols]) - project_f03[, cols]
for(x in 4:23) {project_f03[project_f03[,x]==-9 | project_f03[,x]==-1,x] <- NA}
#could be
for(x in 4:23) {project_f03[project_f03[,x] %in% c(-9,-1), x] <- NA}