例如,如果我有这个:
n = c(2, 3, 5)
s = c("aa", "bb", "cc")
b = c(TRUE, FALSE, TRUE)
df = data.frame(n, s, b)
n s b
1 2 aa TRUE
2 3 bb FALSE
3 5 cc TRUE
然后,我如何将两列n和s组合成一个名为x的新列,使其看起来像这样:
n s b x
1 2 aa TRUE 2 aa
2 3 bb FALSE 3 bb
3 5 cc TRUE 5 cc
答案 0 :(得分:91)
使用paste
。
df$x <- paste(df$n,df$s)
df
# n s b x
# 1 2 aa TRUE 2 aa
# 2 3 bb FALSE 3 bb
# 3 5 cc TRUE 5 cc
答案 1 :(得分:19)
用于插入分隔符:
func doTask(_ password:String) {
let taskOne = Process()
taskOne.launchPath = "/bin/echo"
taskOne.arguments = [password]
let taskTwo = Process()
taskTwo.launchPath = "/usr/bin/sudo"
taskTwo.arguments = ["-S", "/usr/bin/xattr", "-d", "-r", "com.test.exemple", " /Desktop/file.extension"]
//taskTwo.arguments = ["-S", "/usr/bin/touch", "/tmp/foo.bar.baz"]
let pipeBetween:Pipe = Pipe()
taskOne.standardOutput = pipeBetween
taskTwo.standardInput = pipeBetween
let pipeToMe = Pipe()
taskTwo.standardOutput = pipeToMe
taskTwo.standardError = pipeToMe
taskOne.launch()
taskTwo.launch()
let data = pipeToMe.fileHandleForReading.readDataToEndOfFile()
let output : String = NSString(data: data, encoding: String.Encoding.utf8.rawValue) as! String
print(output)
}
答案 2 :(得分:9)
使用应用
删除NA并删除它们的一些示例n = c(2, NA, NA)
s = c("aa", "bb", NA)
b = c(TRUE, FALSE, NA)
c = c(2, 3, 5)
d = c("aa", NA, "cc")
e = c(TRUE, NA, TRUE)
df = data.frame(n, s, b, c, d, e)
paste_noNA <- function(x,sep=", ") {
gsub(", " ,sep, toString(x[!is.na(x) & x!="" & x!="NA"] ) ) }
sep=" "
df$x <- apply( df[ , c(1:6) ] , 1 , paste_noNA , sep=sep)
df
答案 3 :(得分:8)
正如Uwe和UseR的评论中已经提到的, var firSet =
new Dictionary<string, string[]>()
{
{ "a", new[] {"ab", "abc"} },
{ "b", new[] {"bc", "bcd"} }
}
.ToDictionary(i => i.Key, i => i.Value.ToList());
格式的一般解决方案是使用命令tidyverse
:
unite
答案 4 :(得分:7)
使用dplyr::mutate
:
library(dplyr)
df <- mutate(df, x = paste(n, s))
df
> df
n s b x
1 2 aa TRUE 2 aa
2 3 bb FALSE 3 bb
3 5 cc TRUE 5 cc
答案 5 :(得分:5)
我们可以使用 paste0 :
df$combField <- paste0(df$x, df$y)
如果您不希望在连接字段中引入任何填充空间。如果您计划将组合字段用作表示两个字段组合的唯一ID,则此选项更有用。
答案 6 :(得分:4)
代替
paste
(不整洁),paste0
(默认分隔符)或unite
(限于2列和1个分隔符),我建议使用更灵活的替代方法:stringr::str_c
library("tidyverse")
df %>% mutate(x=str_c(n,"-",s,".",b))
#> # A tibble: 3 x 4
#> n s b x
#> <dbl> <fct> <lgl> <chr>
#> 1 2 aa TRUE 2-aa.TRUE
#> 2 3 bb FALSE 3-bb.FALSE
#> 3 5 cc TRUE 5-cc.TRUE
答案 7 :(得分:3)
还有其他一些很好的答案,但是如果您不知道要事先连接的列名或列数,则以下操作很有用。
df = data.frame(x = letters[1:5], y = letters[6:10], z = letters[11:15])
colNames = colnames(df) # could be any number of column names here
df$newColumn = apply(df[, colNames, drop = F], MARGIN = 1, FUN = function(i) paste(i, collapse = ""))