Может быть более простое решение, например, с пакетом reshape2
, но должно работать следующее:
dat <- read.table(text='
words score
word1,word2,word3 12
word4,word5,word6,word7 9',
header=T, stringsAsFactors=FALSE)
wds <- strsplit(dat$words, ',')
score <- rep(dat$score, unlist(lapply(wds, length)))
out <- data.frame(word=unlist(wds), score=score,
stringsAsFactors=FALSE)
> out
word score
1 word1 12
2 word2 12
3 word3 12
4 word4 9
5 word5 9
6 word6 9
7 word7 9
Я изменил данные вашего примера, чтобы продемонстрировать, что они также будут работать для строк, разделенных запятыми, которые имеют разное количество слов.