处理 R 重新编码中缺少的系统?
Dealing with system missing in R recode?
我正在从 SPSS 过渡到 R,我想知道您如何处理系统缺失...
例如,如果我想将以下 SPSS 代码重写到 R 中:
RECODE income (1 THRU 6 = copy) (else = SYSMIS) INTO income2
我可以重新编写以下代码:
income_2018$income2 <- dplyr::recode(income_2018$income, '1' = 1L, '2' = 2L, '3' = 3L, '4' = 4L, '5'
= 5L, '6' = 6L)
如何处理系统缺失(SPSS 代码中的 'else' 语句)?
谢谢!
您可以添加 .default
参数,它将重新编码所有未明确命名的值:
dplyr::recode(income_2018$income, '1' = 1L, '2' = 2L, '3' = 3L, '4' = 4L, '5'
= 5L, '6' = 6L, .default = NA_integer_)
如果您将数字转换为 integer/numeric,这应该会自动进行。
income_2018$income <- as.integer(income_2018$income)
#Or to change it to numeric
#income_2018$income <- as.numeric(income_2018$income)
在将非数字转换为整数之前将它们转换为 NA
时,它将 return 发出警告。
x <- c('1', '2', '4', '6', 'a')
as.integer(x)
#[1] 1 2 4 6 NA
Warning message:
NAs introduced by coercion
正如@H 1 所评论的那样,这些会将所有数字转换为其等效的数字。如果我们只对 1 到 6 之间的数字感兴趣,我们可以这样做。
income_2018$income[income_2018$income > 6 | income_2018$income < 1] <- NA
我正在从 SPSS 过渡到 R,我想知道您如何处理系统缺失...
例如,如果我想将以下 SPSS 代码重写到 R 中:
RECODE income (1 THRU 6 = copy) (else = SYSMIS) INTO income2
我可以重新编写以下代码:
income_2018$income2 <- dplyr::recode(income_2018$income, '1' = 1L, '2' = 2L, '3' = 3L, '4' = 4L, '5'
= 5L, '6' = 6L)
如何处理系统缺失(SPSS 代码中的 'else' 语句)?
谢谢!
您可以添加 .default
参数,它将重新编码所有未明确命名的值:
dplyr::recode(income_2018$income, '1' = 1L, '2' = 2L, '3' = 3L, '4' = 4L, '5'
= 5L, '6' = 6L, .default = NA_integer_)
如果您将数字转换为 integer/numeric,这应该会自动进行。
income_2018$income <- as.integer(income_2018$income)
#Or to change it to numeric
#income_2018$income <- as.numeric(income_2018$income)
在将非数字转换为整数之前将它们转换为 NA
时,它将 return 发出警告。
x <- c('1', '2', '4', '6', 'a')
as.integer(x)
#[1] 1 2 4 6 NA
Warning message: NAs introduced by coercion
正如@H 1 所评论的那样,这些会将所有数字转换为其等效的数字。如果我们只对 1 到 6 之间的数字感兴趣,我们可以这样做。
income_2018$income[income_2018$income > 6 | income_2018$income < 1] <- NA