У меня есть столбец с текстом; где я хотел бы извлечь 20% случайных слов из каждой ячейки.

Пример данных:

text <- c("five1 five2 five3 five4 five5", "ten1 ten2 ten3 ten4 ten5 ten6 ten7 ten8 ten9 ten10", "fifteen1 fifteen2 fifteen3 fifteen4 fifteen5 fifteen6 fifteen7 fifteen8 fifteen9 fifteen10 fifteen11 fifteen12 fifteen13 fifteen14 fifteen15")
id <- c(1, 2, 3)
df <- data.frame(text, id)

Это пример того, как может выглядеть конечный результат:

 df$text_20_random_percent <- c("five4", "ten7 ten2", "fifteen2 fifteen12 fifteen3")

Я безуспешно пытался использовать функцию sample().

r
3
Gorp 2 Янв 2018 в 11:56

1 ответ

Лучший ответ

Один из вариантов - разбить строку на подстроку с помощью strsplit, получить sample слов split, указав size как X% от length и paste вместе

sapply(strsplit(as.character(df$text), " "), 
        function(x) paste(sample(x, 0.2 * length(x)), collapse=' '))
4
akrun 2 Янв 2018 в 09:06