在像
这样的数据集中data_frame(a=letters, a_1=letters, b=letters, b_1=letters)
我想连接共享类似“根”的列,即a
与a_1
和b
与b_1
。输出应该看起来像
# A tibble: 26 x 2
a b
<chr> <chr>
1 a a a a
2 b b b b
3 c c c c
4 d d d d
5 e e e e
6 f f f f
7 g g g g
8 h h h h
9 i i i i
10 j j j j
# ... with 16 more rows
答案 0 :(得分:4)
如果您正在寻找一种整齐的方法,可以使用tidyr::unite_
来实现:
library(tidyr)
# get a list column name groups
cols <- split(names(df), sub("_.*", "", names(df)))
# loop through list and unite columns
for(x in names(cols)) {
df <- unite_(df, x, cols[[x]], sep = " ")
}
答案 1 :(得分:1)
这是一种方法,
ind <- sub('_.*', '', names(df))
as.data.frame(sapply(unique(ind), function(i) do.call(paste, df[i == ind])))
# a b
#1 a a a a
#2 b b b b
#3 c c c c
#4 d d d d
#5 e e e e
#6 f f f f
#7 g g g g
#8 h h h h