我正在尝试制作一个包含人口统计信息的样本数据框。我想确保生成的每一行数据都是合乎逻辑的。具体来说,没有一行表示 22 岁以下同时拥有博士学位的人。如何让数据框对此进行逻辑检查?下面是我目前正在使用的代码。变量“a”是要输出的行数,“b”是年龄中位数,“d”是 NA 的概率。
AgeFn <- function(a,b){
MedianYr <- b
Year <- 1900 + as.POSIXlt(Sys.Date())$year
RNormYr <- as.integer((rnorm(a)*10+MedianYr))
Age1 <- Year - RNormYr
}
EducationFn <- function(a, d){
EducationLs <- c("Some High School", "High School Grad", "Associates", "Bachelors",
"Masters", "Profession", "Doctorate", NA)
Education1 <- sample(EducationLs, a, replace=TRUE, prob=c(0.085, 0.25, 0.075, 0.176, 0.072,
0.019, 0.012, d))
return(Education1)
}
UserGen <- function(a,b,d){
ID <- c(1:a)
Age <- AgeFn(a,b,c)
Education <- EducationFn(a,d)
data.frame(ID, Age, Gender, Education)
}
系统:Mac OS 10.8.2,RStudio:v0.97.312