这个问题是针对r中的Haven包的。
假设我有一个具有以下标签的变量:
1(同意)
2(中立)
3(不同意)
5(未响应)
但是我使用haven
导入到R中的SPSS .sav文件没有将5
指定为缺失变量NA
。
因此,我需要手动指定具有Did not respond
标签选项和5
数值的变量作为缺失的值。但是,我不能只是摆脱数据集中的每个5
,因为其他变量有5
,它是有意义的。我也不能手动列出我需要分配5
作为缺失变量的变量,因为数据集中有数千个变量。
是否有一种方法可以将标签Did not respond
指定为数据集中每个变量的缺失值?
我正在努力解决这个问题:使用haven
读取一个大型SPSS .sav文件,其中包含具有不同值的数字变量,标记为"不知道",这些值可能对其他变量有效。一个同事为我写了这个循环函数,它已经工作了(我已经替换了我的"不知道")。与您的"没有回应")。
它依赖于labelled
包。
replace_no_resp <- function(data) {
for (col in names(data)) {
labels_ls <- val_labels(data[[col]])
if ("Did not respond" %in% labels(val_labels(data[[col]]))) {
no_resp_value <- labels_ls[names(labels_ls) == "Did not respond"]
no_resp_index <- which(data[[col]] == no_resp_value)
data[[col]][no_resp_index] <- NA
}
}
return(data)
}
dat_nas <- replace_no_resp(dat)