2016-11-16 13 views
1

によって要約:dplyr私は、例えば、数値、文字列値を持つデータフレームを持っている文字列

mydf <- data.frame(id = c(1, 2, 1, 2, 3, 4), 
       value = c(32, 12, 43, 6, 50, 20), 
       text = c('A', 'B', 'A', 'B', 'C', 'D')) 

id変数の値は常に、例えば、id == 1は常にtext == 'A'なり、text変数に対応します。

さて、私は(それは同じことだから、またはtextによって)idすることによって、このデータフレームを要約します:

mydf %>% 
    group_by(id) %>% 
    summarize(mean_value = mean(value)) 

これはうまく動作しますが、私はトンがへのWAN以来、私はまた、text変数が必要テキスト分析を行う。私は次のエラーを取得

mydf %>% 
    group_by(id) %>% 
    summarize(mean_value = mean(value), 
    text = text) 

::私はdplyrパイプにtextを追加するとき

しかし、

Error: expecting a single value

idためtextので、常に同じであるが、それはそれを追加することが可能です要約されたデータフレームに?

+4

GROUP_BY(ID、テキスト)%>%のsummarize(mean_value =平均(値)) ' – zx8754

+0

OK'試してみてください、私はしかし、私はこれを試してみましたが、どうやら私がするのを忘れました。うん、これはうまく動作します、ありがとう! – Zlo

答えて

2

summarize関数は、入力上のいくつかの機能を適用する必要があるので、我々はそれのうちtextを維持し、group_byidと一緒に保つ、あるいはsummarizefirst機能を使用できます:

# text should be in group_by to show up in result 
mydf %>% 
    group_by(id, text) %>% 
    summarize(mean_value = mean(value)) 

# or within summarise use first function, to take the first value when grouped 
mydf %>% 
    group_by(id) %>% 
    summarize(mean_value = mean(value), 
      text = first(text)) 
0

代わりにまとめたもので、そのあなたのdfを2つの列だけのデータフレームにして、他の変数を保持できるようにmutateを使用してください。

mydf %>% 
group_by(id) %>% 
mutate(mean_value = mean(value)) 
関連する問題