合并/合并系列列

时间:2019-02-18 15:36:56

标签: r dplyr pipe lapply

我有一个这样的数据帧,它继续可变长度(偶数列号):

V1    V2    V3    V4    V5    V6   
A     B     C     D     E     F  

我希望数据帧的前半部分与数据帧的后半部分成对。 (在上述情况下,将是AD,BE和CF之类的对。)

我是从另一篇帖子中摘录的,但是我无法从中制作出一个数据框。

lapply(1:(ncol(df)/2), function(x) paste(df[,c(x,x+(ncol(df)/2))], collapse = "")) %>% 
data.frame 

有人可以解释这段代码中实际发生了什么吗?

1 个答案:

答案 0 :(得分:0)

我不确定您要面对的是什么问题,但是我可能会遇到两个问题。首先是您的角色变量实际上是因素。在这种情况下,您将获得基础索引而不是字符。第二个潜在问题可能是在paste函数中。这样写可以给我正确的结果。您将必须使用rename_all中的dplyr才能使变量名称可用。

lapply(1:(ncol(df)/2), function(x) paste0(df[[x]], df[[x + ncol(df) / 2]])) %>% data.frame 

现在这是怎么回事:

假设您将始终拥有偶数列,我们将其除以2,然后针对每个列索引,应用paste0函数。 paste0paste(..., sep = '')的简单包装。我们将粘贴x列和x +列数的一半。在我更新的代码中,我使用[[]],因为这将返回字符向量。