Description Usage Arguments Details Value Author(s) See Also Examples
Merge roll call vote record with a data.frame containing
other information. The vote records are typically incomplete,
so match first on houseSenate and surname. If this
match is incomplete, try using givenName. If that fails, try
state and district, which may not always be present in
vote.
1 |
x |
a |
vote |
a |
Office |
Either "House" or "Senate"; ignored if |
vote.x |
name of a column of |
check.x |
logical: If TRUE, check for rows of |
1. Parse vote.x to get the name of the column of x into
which to write the vote column of the vote
data.frame.
2. If the vote data.frame contains a column
Office, ignore the Office argument. Otherwise, add the
argument houseSenate as a column of vote.
3. Create keyx <- with(x, paste(Office, surname, sep=":")),
keyx2 <- paste(keyx, givenName, sep=":"), keyx. <-
paste(houseSenate, state, district, sep=":"), and similarly
keyv, leyv2, and keyv. from vote.
4. Look for keyv in keyx. When a unique match is
found, transfer the vote the vote column of x. When no
match is found, try for keyv2 in keyx2 or keyv.
in keyx. If those fail, print an error message with the
information from vote on all failures and ask the user to add
state and district informuation.
5. if(check.x), check for rows in x[, vote.x] that are
NOT "notEligible" but are also not in vote: Throw an error if
any are found.
a data.frame with the same columns as x with its
vote column modified per the vote argument.
Spencer Graves
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ##
## 1. Test good cases
##
votetst <- data.frame(
surName=c('Smith', 'Jones', 'Graves', 'Jsn', 'Jsn', 'Gay'),
givenName=c("Sam", "", "", "John", "John", ''),
votex=factor(c('Y', 'N', 'abstain', 'Y', 'Y', 'Y')),
State=factor(rep(c("CA", "", "SC", "NY"), c(1, 2, 1, 2))),
district=rep(c("13", "1", "2", "1"), c(1, 2, 2, 1)),
stringsAsFactors=FALSE )
x1 <- data.frame(
Office=factor(rep(c("House", "Senate"), e=8)),
state=rep(c("NY", "SC", "SD", "CA", "AK", "AR", "NY", "NJ"), 2),
District=rep(c("2", "2", "At Large", "13", "1", "9", "1", "3"), 2),
surname=rep(c('Jsn', 'Jsn', 'Smith', 'Smith', 'Jones',
'Graves', 'Rx', 'Agnew'), 2),
givenName=rep(c("John D.", "John J.",
"Samual", "Samual", "Mary", "Mary", "Susan", 'Spiro'), 2),
don=1:16, stringsAsFactors=FALSE)
x1. <- mergeVote(x1, votetst)
x2 <- cbind(x1, votex=factor( rep(
c('Y', 'notEligible', 'Y', 'N', 'abstain', 'Y', 'notEligible'),
c(2,1,1,1,1,1,9) ) ) )
all.equal(x1., x2)
##
## 2. Test a case with a vote error in x
##
x1a <- cbind(x1, voterr=rep(
c('notEligible', 'Y', 'notEligible'), c(7, 1, 8)))
x1a. <- try(mergeVote(x1a, votetst))
class(x1a.)=='try-error'
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.