首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于将变量添加到包括NAs在内的scale项目的问题

关于将变量添加到包括NAs在内的scale项目的问题
EN

Stack Overflow用户
提问于 2019-05-11 23:47:14
回答 2查看 22关注 0票数 1

首先,让我说这个社区非常有帮助。至于我的问题:

我有一些数据,likert的回答是1-4,其中8是我不知道的,9是NA

我使用以下命令将我的8和9替换为NAs:

代码语言:javascript
运行
复制
df %>% mutate_all(~ifelse(.x %in% c(8, 9), NA, .x))

并对每个变量都这样做了。

我现在的问题是,我用NAs得到了漂亮的数据,但我试图将变量组转换为连续的标度项。例如,ir1、ir2和ir3的Likert响应为1-4,相加得到的ir_scale为0- 12。问题是当我将它们相加时:

代码语言:javascript
运行
复制
irscale <- df$ir1 + df$ir2 + df$ir3

任何具有NA的行都将返回NA来计算总和。例如1+3+NA = NA,我希望它返回4。

我不能将NAs转换为0,因为稍后我将使用回归。有什么想法?以下是一个示例数据集:

https://drive.google.com/file/d/1HwtjJ-nChRwVuVQhAYucB_JkUagVtByj/view?usp=sharing

EN

回答 2

Stack Overflow用户

发布于 2019-05-11 23:49:57

一种选择是rowSums,它可以使用na.rm = TRUE来处理NA

代码语言:javascript
运行
复制
df %>%
      mutate(irscale = rowSums(.[paste0("ir", 1:3)], na.rm = TRUE))

或者使用base R

代码语言:javascript
运行
复制
irscale <- rowSums(df[paste0("ir", 1:3)], na.rm = TRUE)
票数 1
EN

Stack Overflow用户

发布于 2019-05-11 23:52:47

您可以使用rowSums来实现这一点。na.rm=T是处理NA的常用参数

代码语言:javascript
运行
复制
mtcars[ 3, 3] <- NA
mtcars$newvar <- rowSums( mtcars[ , 3:5], na.rm=T)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56091879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档