我想用他们的人口统计信息制作一个人的样本数据框。我想确保生成的每一行数据都是逻辑的。具体来说,没有任何一行表明22岁以下的人也拥有博士学位。我如何使数据框对此进行逻辑检查?以下是我目前使用的代码。变量“a”是要输出的行数,“b”是中位年龄,“d”是NA的概率。随机人口统计数据框架理智检查R
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
嗨有。你能否澄清'Age < - AgeFn(a,b,c)'中的'c'。感谢并欢迎来到SO – 2013-02-18 02:24:08
如果您将您的EducationFn概率扩展为年龄的函数会更好。 (在实际样本中是这样。)尽管不太可能,22岁以下的人有可能获得博士学位。 – N8TRO 2013-02-18 02:54:35