Повторная агрегация строк в одну строку - PullRequest
0 голосов
/ 08 января 2019

У меня есть следующие данные,

var1 <- c("101299, 13-132, 13-,", "101299, 12-12, 15-," , "101300, 13-132, 13-,", "101300, 12-12, 15-,")
data <- data.frame(var1)
str(data)
library(dplyr)
data %>% mutate_if(is.factor, as.character) -> data
data
> data
                  var1
1 101299, 13-132, 13-,
2  101299, 12-12, 15-,
3 101300, 13-132, 13-,
4  101300, 12-12, 15-,

Переменная состоит из символов. Я хочу добавить каждую вторую (или некоторую другую строку) строку с первой строкой. Конечный результат должен выглядеть так:

var1
101299, 13-132, 13-, 101299, 12-12, 15-,
101300, 13-132, 13-, 101300, 12-12, 15-,

Есть подсказка, как это сделать?

Дополнительно:

Как предлагается в комментарии ниже, один из способов решения этой проблемы -

data4 <- cbind(data[1:2-1,], data[3:4,])

Он генерирует таблицу, которую я хочу. Однако возможно ли сделать это более абстрактным образом, чтобы я мог использовать это в большом наборе данных? Например, вместо добавления 1 строки я хочу добавить 10 строк в 1 и хочу повторить это 1000 раз.

1 Ответ

0 голосов
/ 09 января 2019

Попробуйте это:

data <- data %>% mutate(index = 1:nrow(data))

second_rows <- data %>% filter(., index%%2==0) %>% rename(var2=var1)
first_rows <- data[data$index %in% (second_rows$index - 1),] 

df <- cbind(first_rows, second_rows)[, c(1,3)]
df %>% mutate(new_var = paste(var1, var2)) %>% select(new_var)

Если вы хотите изменить формат для использования каждой третьей или любых других строк, вы изменяете индекс %% 2 == 0 на индекс %% 3 == 0 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...