【发布时间】:2018-07-16 06:44:51
【问题描述】:
我正在尝试用从每个 student_id 的子集行数据中随机生成的值替换多个列变量中的 NA: data snapshot
所以对于学生 3,收缩压需要更换两个 NA。我使用学生 3 子集中每个变量的最小值和最大值来生成随机值。
library(dplyr)
library(tidyr)
library(tibble)
library(tidyverse)
dplyr::filter(exercise, student_id == "3") %>% replace_na(list(systolic= round(sample(runif(1000, 125,130),2),0),
diastolic =round(sample(runif(1000, 85,85),3),0), heart_rate= round(sample(runif(1000, 79,86),2),0),
phys_score = round(sample(runif(1000, 8,9),2),0)
但它仅在 一个 NA 需要替换时才有效:successfully replaced systolic NA values。当我尝试替换多个 NA 时,会出现此错误。
Error: Replacement for `systolic` is length 2, not length 1
有没有办法解决这个问题?我尝试将列变量转换为数据框而不是它们现在的向量,但它只返回原始数据而没有任何替换更改。
有没有更简单的方法呢?任何建议/cmets 将不胜感激。谢谢。
【问题讨论】:
-
请展示一个使用
dput而不是图片的可重现的小例子。我认为您需要在mutate中创建systolic、diastolic、heart_rate等,然后执行replace_na即exercise %>% filter(student_id =="3") %>% mutate(systolic = round(sample(runif(1000, 125, 130), 2), 0), ..