public
Last active

Extracting Numeric Values from Words

  • Download Gist
Rwords.r
R
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
My.Words <- read.csv("http://www.oberlin.edu/faculty/cdesante/assets/downloads/Randwords.csv")
My.Words$RANDOM.WORDS <- as.character(My.Words$RANDOM.WORDS)
 
#Step 1: Split Character Vectors into Sub-strings:
strsplit(My.Words$RANDOM.WORDS, "")
 
Split.List <- strsplit(My.Words$RANDOM.WORDS, "")
 
#Step 2: Assign a numeric value to each of the 26 letters:
LETTERS
rank(LETTERS)
Letter.Values<- rank(LETTERS)
names(Letter.Values) <- LETTERS
Letter.Values
 
#Step 3: Extract the value of each word by summing the letters' values
 
Word.Sums <- unlist(lapply(Split.List, function(Word){sum(Letter.Values[Word])}))
Word.Sums
 
#Step 4: Which words have the highest and lowest values?
 
My.Words$RANDOM.WORDS[Word.Sums==max(Word.Sums)]
My.Words$RANDOM.WORDS[Word.Sums==min(Word.Sums)]

Steps 2 and 3 look very complicated. You can use the following one-liner

Word.Sums <- sapply(Split.List, function(word) sum(match(word, LETTERS)))

For step 4, you could use which.min and which.max

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.