2016-03-31 14 views
2

私は、Cityと呼ばれるFactorタイプの列を持つデータフレームを持っています。それはNew YorkNEW YORKのような価値があります。dplyrを使用して大文字と小文字を区別しないグループ分けを行うにはどうすればよいですか?

私はこのコードを実行すると:

group_by(dataframe, City)

を、私はこの結果を得る:

City, Value 
New York, 12 
NEW YORK, 100 

私はCityはそれがでNew YorkNEW YORKを配置しますので、大文字と小文字を区別しないようにグループ化したいです同じカテゴリ。

dplyrでこれを行うことはできますか?

+3

使用 'GROUP_BYStevenBeaupréの作品@((市)のtolower)' –

+1

。これを答えると、スタックのオーバーフローが許されたら正しくマークされます。ボーナスについては、どうすれば 'ニューヨーク'カテゴリに入れることができますか? – Username

答えて

3

あなたはgroup_by制服を着た「都市」のカテゴリにしたい場合は、ドキュメントからstringiパッケージから

stri_trans_totitleを使用することができます。単語BreakIteratorは(デフォルト)を使用する場合、stri_trans_totitle

、 各単語の最初の文字は大文字になり、残りの文字は小文字に変換されます。

たとえば

df %>% 
    group_by(Category = stringi::stri_trans_totitle(City)) %>% 
    mutate(rn = row_number()) 

を与えるだろう:

#Source: local data frame [4 x 4] 
#Groups: Category [2] 
# 
#  City Value Category rn 
#  (fctr) (int)  (chr) (int) 
#1 New York 12 New York  1 
#2 NEW YORK 100 New York  2 
#3 NeW JerSey 123 New Jersey  1 
#4 NEW JERSEY 111 New Jersey  2