2016-11-16 70 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變量的值總是對應於text變量,例如,id == 1永遠是text == 'A'

現在,我想id來概括這個數據幀(或text,因爲它是一回事):

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

這工作得很好,但我還需要text變量,因爲我婉噸至做文本分析。

然而,當我添加text到dplyr管:

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

我收到以下錯誤:

Error: expecting a single value

由於textid是永遠不變的,是有可能將其追加到彙總數據幀?

+4

嘗試'GROUP_BY(ID文本)%>%綜述(mean_value =平均(值))' – zx8754

+0

好吧,我雖然我想這一點,但顯然我忘了。是的,這很好,非常感謝! – Zlo

回答

2

summarize功能需要申請上輸入一些功能,所以我們可以保留text了出來,並內group_byid一起保存,或使用first函數內summarize

# 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變成一個只有兩列的數據框,使用mutate,這樣你可以保留其他變量。

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