例如,我有以下带有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)与分隔符“/”合并?
当然变量应该是字符。
答案 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