【发布时间】:2022-01-23 02:01:22
【问题描述】:
上下文:我正在尝试使用采样值向量填充数据中名为“胆固醇”的列的 NA 值,但是,我找不到任何可以帮助解决此问题的方法。我试过使用replace_na,但它没有替换 NA 值
MRE:
胆固醇数据示例
69 181 308 166 211 257 182 NA NA NA NA NA NA NA
[301] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[331] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[361] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[391] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 260 209 218 228
[421] 213 NA 236 NA NA 267 166 NA NA NA NA 220 177 236 NA NA NA NA NA NA NA NA NA 186 100 228 NA 171 230 NA
[451] NA NA 281 NA 203 NA NA NA NA NA 277 NA 233 NA NA 240 NA NA 153 224 NA NA NA 316 NA NA 218 NA 311 NA
[481] NA NA 270 NA NA 217 214 214 252 220 214 203 NA 339 216 276 458 241 384 297 248 308 208 227
将填充 NA 值的向量:
missing_values = sum(is.na(df$Cholesterol))
missing_values
# Set seed
set.seed(42)
fill_NA_values_cholesterol = sample(rnorm(n = missing_values, mean = mean(cholesterol_sem_valores_nulos, trim = 0.2), sd = mad(cholesterol_sem_valores_nulos)), size = missing_values)
变量cholesterol_sem_valores_nulos 只是一个不同的向量,只有填充值(NA 不存在于该向量中)
如何使代码使用向量fill_NA_values_cholesterol 填充 NA 值? df$Cholesterol 中存在的 NA 值的数量为 172(与 fill_NA_values_cholesterol 的长度相同)
提前谢谢你
【问题讨论】:
-
df$Cholesterol[is.na(df$Cholesterol)] <- fill_NA_values_cholesterol -
操作系统将所有 NA 值填充为这样的向量:c(309.737491615604, 239.617009170834, 270.46...) 并且不将向量中的单个值归因于 NA
-
嗯,听起来
Cholesterol可能是list列?您能否与dput共享您的示例数据,以便它可以复制/粘贴并包含类和结构信息?dput(head(df))或dput(head(df[, "cholesterol", drop = FALSE])) -
您是否需要将您的
NA完全替换为向量fill_NA_values_cholesterol,或者您是否可以将每个NA替换为rnorm(n = 1, mean = mean(cholesterol_sem_valores_nulos, trim = 0.2), sd = mad(cholesterol_sem_valores_nulos))生成的值? -
@GregorThomas 正确,我刚刚使用 typeof(df$Cholesterol) 并且输出是一个列表
标签: r