2017-02-04 5 views
1

非常に単純な質問ですが、私はバリエーションを試しましたが、この小さな変更を行うためにデータフレームを取得できません。データフレームの開始行を折りたたみ、ユニークを保ち、セミコロンで区切ります。

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 = ";"))) 

答えて

2

私たちは感謝の@akrun代わり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 
+0

の空白("")を持っています!そして、他の変数(c、l)に一意の値だけが必要な場合は、崩壊後、私は単にsummarize_eachのコード行に 'unique'を追加しますか? – BlueDevilPride

+0

その場合は 'unique '、つまり' summarise_each(funs(paste {unique [.character(。)])、collapse = ";"))) ' – akrun

+1

をラップするだけです。あなたはRを発明しましたか? ha。私はここであなたの名前を答えの上に見ます。再度、感謝します。 – BlueDevilPride

関連する問題