将行重复聚合为单行

时间:2019-01-08 20:51:06

标签: r dplyr

我有以下数据

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 :(得分:0)

尝试一下:

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)

如果您想更改格式以使用每三分之一或任何行,则将index %% 2 == 0更改为index %% 3 == 0,依此类推。