set.seed(0)
numRows <- 100
age <- ceiling(100*runif(numRows))
income <- ceiling(1e5*round(rlnorm(numRows),2))
debtToIncome <- 10*runif(numRows)
dataMatrix <- matrix(c(age,income,debtToIncome),
nrow=numRows,
ncol=3,
byrow=FALSE,
dimnames=list(1:numRows,c("age","income","debtToIncome"))
)
cat("What the data looks like:\n")
head(dataMatrix)
maxAge <- 60
minAge <- 20
maxIncome <- 3e5
minIncome <- 2e4
maxDTI <- 8
minDTI <- 0
dataMatrix <- dataMatrix[(dataMatrix[,"age"]<=maxAge &
dataMatrix[,"age"]>=minAge &
dataMatrix[,"income"]<=maxIncome &
dataMatrix[,"income"]>=minIncome &
dataMatrix[,"debtToIncome"]<=maxDTI &
dataMatrix[,"debtToIncome"]>=minDTI
),]
numRowsRemoved <- numRows-nrow(dataMatrix)
cat(numRowsRemoved, " rows were removed\n\n\n")
## Original context:
cat("Original context:\n\n")
pd <- matrix(c(age,income,debtToIncome),
nrow=numRows,
ncol=3,
byrow=FALSE,
dimnames=list(1:numRows,c("age","income","debtToIncome"))
)
cat("pd contains:\n")
print(pd)
upper <- c(60,3e5,8)
lower <- c(20,2e4,0)
# Something illogical going on with R replicating the vector ergo the transpose:
pd <- pd [apply(t(pd)<=upper & t(pd)>=lower,2,all),]
a <- numRows-nrow(pd)
cat("\na is ",a,"\n\n")
cat("reduced pd:\n")
print(pd)
CnNldC5zZWVkKDApCm51bVJvd3MgPC0gMTAwCmFnZSA8LSBjZWlsaW5nKDEwMCpydW5pZihudW1Sb3dzKSkKaW5jb21lIDwtIGNlaWxpbmcoMWU1KnJvdW5kKHJsbm9ybShudW1Sb3dzKSwyKSkKZGVidFRvSW5jb21lIDwtIDEwKnJ1bmlmKG51bVJvd3MpCmRhdGFNYXRyaXggPC0gbWF0cml4KGMoYWdlLGluY29tZSxkZWJ0VG9JbmNvbWUpLAoJCQkJCSBucm93PW51bVJvd3MsCgkJCQkJIG5jb2w9MywKCQkJCQkgYnlyb3c9RkFMU0UsCgkJCQkJIGRpbW5hbWVzPWxpc3QoMTpudW1Sb3dzLGMoImFnZSIsImluY29tZSIsImRlYnRUb0luY29tZSIpKQoJCQkJCSApCgkJCQkJCmNhdCgiV2hhdCB0aGUgZGF0YSBsb29rcyBsaWtlOlxuIikKaGVhZChkYXRhTWF0cml4KQoKbWF4QWdlIDwtIDYwCm1pbkFnZSA8LSAyMAptYXhJbmNvbWUgPC0gM2U1Cm1pbkluY29tZSA8LSAyZTQKbWF4RFRJIDwtIDgKbWluRFRJIDwtIDAKCmRhdGFNYXRyaXggPC0gZGF0YU1hdHJpeFsoZGF0YU1hdHJpeFssImFnZSJdPD1tYXhBZ2UgJiAKCQkJCQkJICBkYXRhTWF0cml4WywiYWdlIl0+PW1pbkFnZSAmCgkJCQkJCSAgZGF0YU1hdHJpeFssImluY29tZSJdPD1tYXhJbmNvbWUgJgoJCQkJCQkgIGRhdGFNYXRyaXhbLCJpbmNvbWUiXT49bWluSW5jb21lICYKCQkJCQkJICBkYXRhTWF0cml4WywiZGVidFRvSW5jb21lIl08PW1heERUSSAmCgkJCQkJCSAgZGF0YU1hdHJpeFssImRlYnRUb0luY29tZSJdPj1taW5EVEkKCQkJCQkJICApLF0KCm51bVJvd3NSZW1vdmVkIDwtIG51bVJvd3MtbnJvdyhkYXRhTWF0cml4KQoKY2F0KG51bVJvd3NSZW1vdmVkLCAiIHJvd3Mgd2VyZSByZW1vdmVkXG5cblxuIikKCiMjIE9yaWdpbmFsIGNvbnRleHQ6CgpjYXQoIk9yaWdpbmFsIGNvbnRleHQ6XG5cbiIpCgpwZCA8LSBtYXRyaXgoYyhhZ2UsaW5jb21lLGRlYnRUb0luY29tZSksCgkJCSBucm93PW51bVJvd3MsCgkJCSBuY29sPTMsCgkJCSBieXJvdz1GQUxTRSwKCQkJIGRpbW5hbWVzPWxpc3QoMTpudW1Sb3dzLGMoImFnZSIsImluY29tZSIsImRlYnRUb0luY29tZSIpKQoJCQkgKQoKY2F0KCJwZCBjb250YWluczpcbiIpCQkJIApwcmludChwZCkKCQp1cHBlciA8LSBjKDYwLDNlNSw4KQpsb3dlciA8LSBjKDIwLDJlNCwwKQoKIyBTb21ldGhpbmcgaWxsb2dpY2FsIGdvaW5nIG9uIHdpdGggUiByZXBsaWNhdGluZyB0aGUgdmVjdG9yIGVyZ28gdGhlIHRyYW5zcG9zZToKcGQgIDwtIHBkIFthcHBseSh0KHBkKTw9dXBwZXIgJiB0KHBkKT49bG93ZXIsMixhbGwpLF0KCmEgPC0gbnVtUm93cy1ucm93KHBkKQoKY2F0KCJcbmEgaXMgIixhLCJcblxuIikKCmNhdCgicmVkdWNlZCBwZDpcbiIpCQpwcmludChwZCk=