因子变量标签但按比例
Factor Variable Labelling but proportionally
我正在组织数据集,但在因子变量方面遇到了问题。我的性别变量总数为 3246,其中大多数是男性。我在性别类别中有 50 NA
。我不想删除带有 NA
的观察结果,但也不想将其全部替换为 'male' 或 'female'。我想随机将 7 个 NA 更改为 'female',将 43 个更改为 'male'。但是,我做不到。
我已经知道如何将 NA
更改为一种类型。
data$Gender[is.na(data$Gender)] = 'male'
您可以使用 is.na()
将变量子集化为 na
对象,从 sum
的值 u
niverse 中创建一个 sample
] na
中的 TRUE
个,并用新样本替换子集。这里有一个例子:
## example data
n <- 1e3
set.seed(42)
x <- sample(c('f', 'm'), n, replace=TRUE)
x[sample(length(x), 50)] <- NA
table(x, useNA="ifany")
# x
# f m <NA>
# 476 474 50
## solution 1
u <- unique(na.omit(x)) ## value universe
na <- is.na(x) ## subset variable
x[na] <- sample(u, sum(na), replace=TRUE) ## new sample
table(x, useNA="ifany") ## result
# x
# f m
# 504 496
您也可以使用非缺失数据的比例来创建女性和男性,如下所示:
## solution 2 (Note: Create example data again from above)
p <- proportions(table(x)) ## proportions
na <- is.na(x) ## subset variable
x[na] <- sample(names(p), sum(na), replace=TRUE, prob=p) ## new sample
table(x, useNA="ifany") ## result
# x
# f m
# 500 500
我正在组织数据集,但在因子变量方面遇到了问题。我的性别变量总数为 3246,其中大多数是男性。我在性别类别中有 50 NA
。我不想删除带有 NA
的观察结果,但也不想将其全部替换为 'male' 或 'female'。我想随机将 7 个 NA 更改为 'female',将 43 个更改为 'male'。但是,我做不到。
我已经知道如何将 NA
更改为一种类型。
data$Gender[is.na(data$Gender)] = 'male'
您可以使用 is.na()
将变量子集化为 na
对象,从 sum
的值 u
niverse 中创建一个 sample
] na
中的 TRUE
个,并用新样本替换子集。这里有一个例子:
## example data
n <- 1e3
set.seed(42)
x <- sample(c('f', 'm'), n, replace=TRUE)
x[sample(length(x), 50)] <- NA
table(x, useNA="ifany")
# x
# f m <NA>
# 476 474 50
## solution 1
u <- unique(na.omit(x)) ## value universe
na <- is.na(x) ## subset variable
x[na] <- sample(u, sum(na), replace=TRUE) ## new sample
table(x, useNA="ifany") ## result
# x
# f m
# 504 496
您也可以使用非缺失数据的比例来创建女性和男性,如下所示:
## solution 2 (Note: Create example data again from above)
p <- proportions(table(x)) ## proportions
na <- is.na(x) ## subset variable
x[na] <- sample(names(p), sum(na), replace=TRUE, prob=p) ## new sample
table(x, useNA="ifany") ## result
# x
# f m
# 500 500