【发布时间】:2020-06-06 10:54:34
【问题描述】:
考虑下面的数据框:
ID <- rep(c(1, 2,3,4,5))
Sex <- rep(c("Female", "Female","Male", "Female","Male"))
Age <- rep(c(NA,55,70,18,19))
size <- rep(c(3, 4,6,2,7))
level <- rep(c("student","student","classmates", "parents","classmates"))
data <- data.frame(ID,size,Sex,Age,level)
data
#> ID size Sex Age level
#> 1 1 3 Female NA student
#> 2 2 4 Female 55 student
#> 3 3 6 Male 70 classmates
#> 4 4 2 Female 18 parents
#> 5 5 7 Male 19 classmates
首先,我想根据列大小中的值按 ID 重复空行数,例如,ID == 1 由于 size = 3 有额外的 3 个空行,依此类推。所以我有这样的东西。
ID <- rep(c(1,1,1,1, 2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,5))
Sex <- rep(c("Female",NA,NA,NA,"Female",NA,NA,NA,NA,"Male",NA,NA,NA,NA,NA,NA, "Female",NA,NA,"Male",NA,NA,NA,NA,NA,NA,NA))
Age <- rep(c(NA,NA,NA,NA,55,NA,NA,NA,NA,70,NA,NA,NA,NA,NA,NA, 18,NA,NA,19,NA,NA,NA,NA,NA,NA,NA))
size <- rep(c(3,NA,NA,NA,4,NA,NA,NA,NA,6,NA,NA,NA,NA,NA,NA, 2,NA,NA,7,NA,NA,NA,NA,NA,NA,NA))
level <- rep(c("student",NA,NA,NA,"student",NA,NA,NA,NA,"classmates",NA,NA,NA,NA,NA,NA,"parents",NA,NA,"classmates",NA,NA,NA,NA,NA,NA,NA))
data2 <- data.frame(ID,size,Sex,Age,level)
data2
#> ID size Sex Age level
#> 1 1 3 Female NA student
#> 2 1 NA <NA> NA <NA>
#> 3 1 NA <NA> NA <NA>
#> 4 1 NA <NA> NA <NA>
#> 5 2 4 Female 55 student
#> 6 2 NA <NA> NA <NA>
#> 7 2 NA <NA> NA <NA>
#> 8 2 NA <NA> NA <NA>
#> 9 2 NA <NA> NA <NA>
#> 10 3 6 Male 70 classmates
#> 11 3 NA <NA> NA <NA>
#> 12 3 NA <NA> NA <NA>
#> 13 3 NA <NA> NA <NA>
#> 14 3 NA <NA> NA <NA>
#> 15 3 NA <NA> NA <NA>
#> 16 3 NA <NA> NA <NA>
#> 17 4 2 Female 18 parents
#> 18 4 NA <NA> NA <NA>
#> 19 4 NA <NA> NA <NA>
#> 20 5 7 Male 19 classmates
#> 21 5 NA <NA> NA <NA>
#> 22 5 NA <NA> NA <NA>
#> 23 5 NA <NA> NA <NA>
#> 24 5 NA <NA> NA <NA>
#> 25 5 NA <NA> NA <NA>
#> 26 5 NA <NA> NA <NA>
#> 27 5 NA <NA> NA <NA>
其次,在 data2 中,如果对于每个级别 == 同学的 ID,按照分布(例如均匀分布,a = 2 和 b= 3 或正态分布,平均值为 2 和方差 3)。 我想根据级别使用具有不同年龄范围的随机值填充 data2“年龄”列。对于level =学生,年龄范围可能是0到18岁,对于父母来说,例如30-60等等。 如果我没有足够清楚地说明问题,请随时询问,我会尝试更清楚地解释它!提前谢谢大家!
【问题讨论】:
-
所以除了
level = "parents"你想用随机值填充data2age列,其余所有列将保持NA? -
是的,我想根据级别使用具有不同年龄范围的随机值填充 data2 年龄列。对于 level = students,年龄范围可能是 0 到 18,对于父母来说,例如 30-60 等等
标签: r dataframe data.table dplyr