2017-08-01 84 views
-1
df <- data.frame(name=c('black','black','black','red','red'), 
       type=c('chair','chair','sofa','sofa','sofa'), 
       num=c(4,4,12,4,6)) 

各行について、その行のnum値で "type"が表示された回数をカウントし、新しい列を作成したいとします。したがって、最初の行では、 "chair"と "num"がデータセットに2回表示されるため、2が割り当てられます。 3行目では、ソファが12重複発生数のカウント数[R]

df 
# name type num count 
# 1 black chair 4  2 
# 2 black chair 4  2 
# 3 black sofa 12  1 
# 4 red sofa 4  1 
# 5 red sofa 6  1 
+1

を返すDFを作成するために、あなたのコードにタイプミスがあります:第二 'num'は' 4'でなければなりません。 –

+3

同じ課題5年10ヶ月後;) – Henrik

答えて

1

利用dplyr::add_countの値で一度表示されます。

dplyr::add_count(df, type, num) 

# A tibble: 5 x 4 
# name type num  n 
# <fctr> <fctr> <dbl> <int> 
#1 black chair  4  2 
#2 black chair  4  2 
#3 black sofa 12  1 
#4 red sofa  4  1 
#5 red sofa  6  1 
3

ベースRでaveを使用して、

df$count <- with(df, ave(num, name, type, num, FUN=length)) 

はの長さを取得してい名前、タイプ、および番号でグループ化します。タイピングを減らすには、withを使用してください。

これは

df 
    name type num count 
1 black chair 4  2 
2 black chair 4  2 
3 black sofa 12  1 
4 red sofa 4  1 
5 red sofa 6  1 
関連する問題