使用 tidyr 的 `unite_` 与 `unite` 的额外列
Extra column using tidyr's `unite_` vs `unite`
在下面的示例中,为什么 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
两种用法之间的语法略有不同:
#unite(data, col, ..., sep = "_", remove = TRUE)
#unite_(data, col, from, sep = "_", remove = TRUE)
在 unite_ 帮助页面中,from
选项定义为:"Names of existing columns as character vector."
使用列名而不是列号来提供所需的结果:
unite_(x1, "mix", names(x1[,2:ncol(x1)]), sep=",")
# Sample mix
#1 A -,-,x
#2 B y,z,a
我试过 "Unite" 但没用。但是,它与 "paste" 函数配合使用效果很好。
df$new_col <- 粘贴(df$col1,df$col2,sep="-")
或者如果您有更多列要加入,
df$new_col <- 粘贴(df$col1,df$col2,df$col3,....,sep="-")
在下面的示例中,为什么 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
两种用法之间的语法略有不同:
#unite(data, col, ..., sep = "_", remove = TRUE)
#unite_(data, col, from, sep = "_", remove = TRUE)
在 unite_ 帮助页面中,from
选项定义为:"Names of existing columns as character vector."
使用列名而不是列号来提供所需的结果:
unite_(x1, "mix", names(x1[,2:ncol(x1)]), sep=",")
# Sample mix
#1 A -,-,x
#2 B y,z,a
我试过 "Unite" 但没用。但是,它与 "paste" 函数配合使用效果很好。
df$new_col <- 粘贴(df$col1,df$col2,sep="-") 或者如果您有更多列要加入,
df$new_col <- 粘贴(df$col1,df$col2,df$col3,....,sep="-")