2017-03-13 11 views
0

ここに私のサンプルデータセットがあります。グループ内のグループに基づいて文字列の出現を計算する

Singer <- c("A","B","C","A","B","D") 
Rank <- c(1,2,3,3,2,1) 
data <- data_frame(Singer,Rank) 

各歌手のランクの平均を計算したいと思います。そして私は以下のような "要約"機能を使用しました。

summarise(group_by(data,Singer),mean.rank = mean(Rank)) 

ここで、歌手が何回表示されるかを示す列を追加します。このサンプルでは、​​「A」と「B」が2回表示され、「C」と「D」が1回表示されます。

私は "テーブル(unlist())"を使用しようとしました。しかし、要約機能では機能しませんでした。

答えて

1

dplyrソリューション

data 
    Singer Rank 
1  A 1 
2  B 2 
3  C 3 
4  A 3 
5  B 2 
6  D 1 
library(tidyverse) 
data %>% group_by(Singer) %>% summarize(mean_rank=mean(Rank),count=n()) 
# A tibble: 4 × 3 
    Singer mean_rank count 
    <fctr>  <dbl> <int> 
1  A   2  2 
2  B   2  2 
3  C   3  1 
4  D   1  1 
+0

感謝。それはうまく動作します –

+0

優れています。それが正しい場合は、それを最善の答えとして選択してください。 – akaDrHouse

0

data.tableソリューション

library(data.table) 
    setDT(data)[, list(mean_rank = mean(Rank), count = .N), by = 'Singer'] 
関連する問題