2017-01-27 10 views
-1

パッケージのdplyrを使用してRの表を要約しています。私は私のテーブル(Services.Offered)内の列のためのユニークな値だけを見たいと思います。私は、次のコードをしようとすると、これは「Services.Offered」「ユニーク」(例えば使用にもかかわらず、重複が含まれている列のdplyrを使用してRの文字列の一意の値を取得

sheetforr1=sheetforr %>% 
       group_by(Account.Name, Service.managed.by.country) %>% 
       summarise(Services.Offered = unique(toString(Service.Level.2)), 
         POB = toString(Number.of.Users), 
         Start.Dates = toString(Provider.Start.Date), 
         End.Dates = toString(Provider.End.Date)) %>% 
       ungroup() 

結果、カラム・中しかし、私は一意の値を取得しない:クリーニングを、ガーデニング、メンテナンス、クリーニング、ハウスキーピング、ハウスキーピング)。また

、私が代わりに「ユニーク」の「明確な」を使用し、私は、エラーメッセージが表示されます:

「distinct_が」クラス「文字」のオブジェクトに適用されるための適用可能な方法ありません

私が今使っている例を続けると、Services.Offeredの列には、(クリーニング、ガーデニング、メンテナンス、ハウスキーピング)が表示されます。

ご協力いただきありがとうございます。

+0

、コードの可読性が大幅に事業者を中心に適切なインデントや空白を使用することにより改善されるだろう...ここで –

+1

はクレイジーなアイデアです....いくつかの再現性のあるデータを共有!??!? – Sotos

答えて

1

toStringuniqueの中に入れているので、完全なベクトルが最初に文字列に変換されています。その後、uniqueはその1つの文字列を返すだけです。注文を元に戻すと、正しい行動が得られます。あなたが任意のサンプルデータを提供していませんでしたので

は、ここでの例です:

set.seed(8675309) 
df <- 
    data.frame(
    group = rep(LETTERS[1:3], each = 5) 
    , string = sample(letters[1:10], 15, TRUE) 
) 



df %>% 
    group_by(group) %>% 
    summarise(strings = toString(unique(string))) 

戻り、私は一般的に(結果をソートすることを好む

group strings 
    <chr>  <chr> 
1  A b, e, h, c 
2  B g, j, i, e 
3  C i, f, c, h 

、B、C」となるよう"と" c、b、a "は同じエントリを与える)、私はより多くのコントロールが好きなので、私は通常次のようなものを使用します:

df %>% 
    group_by(group) %>% 
    summarise(strings = string %>% unique %>% sort %>% paste(collapse = ", ")) 

group strings 
    <chr>  <chr> 
1  A b, c, e, h 
2  B e, g, i, j 
3  C c, f, h, i 
関連する問題