使用tidyr的`unite_` vs`unite`的额外列

时间:2016-06-15 13:16:40

标签: r tidyr

在以下示例中,为什么unite_()输出与unite()输出中还有一列?

library(tidyr)

x1 <- data.frame(Sample=c("A", "B"), "1"=c("-", "y"), 
                 "2"=c("-", "z"), "3"=c("x", "a"), check.names=F)
#   Sample 1 2 3
# 1      A - - x
# 2      B y z a

在这里,我们看到了所需的输出:

unite(x1, mix, 2:ncol(x1), sep=",")
#   Sample   mix
# 1      A -,-,x
# 2      B y,z,a

为什么这里有一个额外的列(1列)?默认设置是删除unite_()使用的列。

unite_(x1, "mix", 2:ncol(x1), sep=",")
#   Sample 1   mix
# 1      A - -,-,x
# 2      B y y,z,a

注意:tidyr版本0.5.1

2 个答案:

答案 0 :(得分:2)

两种用法之间的语法略有不同:

#unite(data, col, ..., sep = "_", remove = TRUE)
#unite_(data, col, from, sep = "_", remove = TRUE)

在unite_帮助页面中,from选项定义为:&#34;现有列的名称为字符向量。&#34;

使用列名而不是提供所需结果的列号:

unite_(x1, "mix", names(x1[,2:ncol(x1)]), sep=",")
#  Sample   mix
#1      A -,-,x
#2      B y,z,a

答案 1 :(得分:0)

我尝试使用“ Unite”,但是没有用。但是,它与“粘贴”功能配合得很好。

df $ new_col <-粘贴(df $ col1,df $ col2,sep =“-”) 或者如果您有更多要加入的列,

df $ new_col <-粘贴(df $ col1,df $ col2,df $ col3,....,sep =“-”)

相关问题