Assign n Email Addresses to x Cells, Intrinsically

March 5, 2014

(This article was first published on You Know, and kindly contributed to R-bloggers)

Assign n Email Addresses to x Cells, Intrinsically

Assign n Email Addresses to x Cells, Intrinsically

Sample Use Case:
Marketing requests that an email address list be divided randomly into a given number of cells so that each cell would receive a different version of copy.
Below is a technique that takes n email addresses and pseudo-randomly assigns each to one of x cells. The advantage of this method is that the user does not need to maintain a log of each email address's assigned cell since the cell assignment can be reproduced at any time.
First, read in a list of email addresses to be assigned.

emails <- c("[email protected]", "[email protected]", "[email protected]", 
"[email protected]", "[email protected]", "[email protected]", "[email protected]",
"[email protected]", "[email protected]", "[email protected]", "[email protected]",
"[email protected]", "[email protected]", "[email protected]")
## [1] 14

Next, assign the number of cells.

cells <- 3

Create a vector of the number of characters in each email address.

em.len <- nchar(emails)

Use the modulo function (%%) to create a vector of remainders. 1 is added to the number of cells as a holdout.

em.mod <- em.len%%(cells + 1)

The table function summarizes how many email addresses have been assigned to each cell (including the holdout).

## em.mod
## 0 1 2 3
## 3 3 4 4

Separate the original list of email addresses into the assigned cells.

em.1 <- emails[em.mod == 1]  #  cell 1
em.2 <- emails[em.mod == 2] # cell 2
em.3 <- emails[em.mod == 3] # cell 3
em.0 <- emails[em.mod == 0] # control

Display the email addresses assigned to each cell.

## [1] "[email protected]"             "[email protected]"                
## [3] "[email protected]"
## [1] "[email protected]"     "[email protected]"
## [3] "[email protected]" "[email protected]"
## [1] "[email protected]"         "[email protected]"
## [3] "[email protected]" "[email protected]"
## [1] "[email protected]" "[email protected]"     "[email protected]"

Now each email address has been assigned to a specific number of given cells.
Each email address will always belong to the current cell because the number of characters it has will not change.

To leave a comment for the author, please follow the link and comment on their blog: You Know. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)