这是我的数据框
s <- data.frame(
x = c("a","b","c"),
y = c("d","e", NA),
z = c(NA,"j",NA)
)
我想根据条件连接(粘贴)值,我想用逗号粘贴非空值,所以我想要的结果是:
a,b,c
d,e
j
也许这很简单,但我不知道该怎么做。
答案 0 :(得分:4)
由于不是GIS或空间分析相关,这个问题应该迁移到Stack Overflow,但同时也是如此。
s <- data.frame(
x = c("a","b","c"),
y = c("d","e", NA),
z = c(NA,"j",NA)
)
将逗号添加为单个向量或按列添加:
paste(sapply(strsplit(as.vector(na.omit(c(s[,1], s[,2], s[,3]))), ""),
paste, collapse=":"), collapse=", ")
sapply(as.list(s), function(x) {paste(na.omit(x), collapse=", ")})
答案 1 :(得分:2)
另一种选择是
library(dplyr)
s %>%
summarise_each(funs(toString(na.omit(.)))) %>%
unlist(., use.names=FALSE)
#[1] "a, b, c" "d, e" "j"