将data.frame中的列与“/”符号合并

时间:2016-09-22 09:49:11

标签: r dataframe merge

例如,我有以下带有5列的data.frame:

1 AAA     123             12              33           0.23                           
2 BBB     3123            44              22           0.55                           
3 CCC     221             45              11           0.44                          

从这个数据框架我想创建新的,如下所示:

    1 AAA     123/12         33/0.23                                      
    2 BBB     3123/44        22/0.55                                      
    3 CCC     221/45         11/0.44    

如何将列(2& 3和4& 5)与分隔符“/”合并?

当然变量应该是字符。

3 个答案:

答案 0 :(得分:2)

我们可以遍历第二和第四列索引,根据索引获取列,并将paste一起获取,并使用原始数据集的第一列获取cbind

cbind(df[1], do.call(cbind, lapply(c(2,4), function(i) 
                   do.call(paste, c(df[i:(i+1)], sep="/")))))

或其他选项unite来自tidyr

library(dplyr)
library(tidyr)
df %>%
    unite(col2_col3, col2, col3, sep="/") %>%
    unite(col4_col5, col4, col5, sep="/")

答案 1 :(得分:2)

这个怎么样:

cbind(df[,1], sapply(c(2,4), function(x)  paste0(df[,x],"/",df[,x+1])))

答案 2 :(得分:1)

这也可以:

cbind.data.frame(df[1:2], 
                 V3=paste(df[,3], df[,4],sep='/'),
                 V4=paste(df[,5], df[,6],sep='/'))

V1  V2      V3      V4
1  1 AAA  123/12 33/0.23
2  2 BBB 3123/44 22/0.55
3  3 CCC  221/45 11/0.44