在以下示例中,为什么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
答案 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 =“-”)