非常简单的问题,但我尝试了很多变化,但无法让我的数据框进行这一小改动。
启动数据框:
l = c("a", "b", "", "c","d")
c = c("green", "blue", "black","red","")
n = c(1,1,1,2,2)
df = data.frame(n,c,l)
期望的输出:
l = c("a;b","c;d")
c = c("green;blue;black","red")
n = c(1,2)
dff = data.frame(n,c,l)
一个非常相似的问题被问到here,这段代码完美无缺,我只是不能用分号来分隔它。
以下是代码:
#Combine Rows, delete dups, keep uniques, remove NAs
library(dplyr)
rm_na_unique <- function(vec){
unique(vec[!is.na(vec)])
}
df <- df %>%
group_by(n) %>%
summarise_each(funs(toString(rm_na_unique(.))))
我尝试在不同的地方插入下面的代码行,但它似乎不起作用。很抱歉这个简单的问题,但我可以尝试解决这个问题。有时这些小问题是最难解决的,当你还没有语法命令时。谢谢。
(paste(., collapse = ";")))
答案 0 :(得分:2)
我们有空白(""
)而不是NA
df %>%
group_by(n) %>%
summarise_each(funs(paste(.[nzchar(as.character(.))], collapse=";")))
# A tibble: 2 × 3
# n c l
# <dbl> <chr> <chr>
#1 1 green;blue;black a;b
#2 2 red c;d