У меня есть текстовая переменная и переменная группировки. Я хотел бы свернуть текстовую переменную в одну строку за строку (объединить). Поэтому, пока колонка группы говорит m
Я хочу сгруппировать текст вместе и так далее. Я представил образец данных до и после. Я пишу это для пакета и до сих пор избегал всякой зависимости от других пакетов, кроме wordcloud
, и хотел бы сохранить его таким образом.Свернуть столбики путем группировки переменной (в базе)
Я подозреваю, что rle
может быть полезен с cumsum
, но не смог вычислить этот вариант.
Заранее спасибо.
Что данные выглядят как
text group
1 Computer is fun. Not too fun. m
2 No its not, its dumb. m
3 How can we be certain? f
4 There is no way. m
5 I distrust you. m
6 What are you talking about? f
7 Shall we move on? Good then. f
8 Im hungry. Lets eat. You already? m
То, что я хотел бы данные, чтобы выглядеть
text group
1 Computer is fun. Not too fun. No its not, its dumb. m
2 How can we be certain? f
3 There is no way. I distrust you. m
4 What are you talking about? Shall we move on? Good then. f
5 Im hungry. Lets eat. You already? m
В данных
dat <- structure(list(text = c("Computer is fun. Not too fun.", "No its not, its dumb.",
"How can we be certain?", "There is no way.", "I distrust you.",
"What are you talking about?", "Shall we move on? Good then.",
"Im hungry. Lets eat. You already?"), group = structure(c(2L,
2L, 1L, 2L, 2L, 1L, 1L, 2L), .Label = c("f", "m"), class = "factor")), .Names = c("text",
"group"), row.names = c(NA, 8L), class = "data.frame")
EDIT: я обнаружил, что могу добавить уникальный столбец для каждого запуска групповой переменной с:
x <- rle(as.character(dat$group))[[1]]
dat$new <- as.factor(rep(1:length(x), x))
Уступая:
text group new
1 Computer is fun. Not too fun. m 1
2 No its not, its dumb. m 1
3 How can we be certain? f 2
4 There is no way. m 3
5 I distrust you. m 3
6 What are you talking about? f 4
7 Shall we move on? Good then. f 4
8 Im hungry. Lets eat. You already? m 5
Я не верю, что вам нужно «Seq (длина (k $ len)) », так как последовательность будет« seq_along »вектором длины k $, давая вам эквивалентную последовательность чисел: id <- rep (seq (k $ length), k $ length) –
@BryanGoodrich Хорошая уловка , Первоначально я просто собирался сделать 1: length (k $ len), но в последнее время я больше двигаюсь к использованию seq и seq_along, и, я думаю, у меня получилось несоответствие двух подходов. – Dason
Обычно я просто придерживаюсь seq, но для ясности я вижу, как seq_along делает это явным, что вы численно пересекаете вектор значений. Я часто склоняюсь к этому пути ясности, когда имею дело с избыточным булевым вектором, используя x [который (... какая-то логика здесь ...)]. Это не обязательно, но это дает лингвистическую ясность для кодирования, которое я предпочитаю. –