2017-04-22 101 views
0

更換相同的行我有一個看起來像這樣的數據:R:平均

patient day response 
Bob "08/08/2011" 5 

但是,有時候,我們不得不在同一天幾個響應(來自同一患者)。對於所有這樣的行,我想用全部行代替它們,病人和那一天當然是所有這些行的情況,並且響應是它們的平均值。

因此,如果我們也有

patient day response 
Bob "08/08/2011" 6 

然後我們會刪除這兩個行,並與

patient day response 
Bob "08/08/2011" 5.5 

我怎樣寫了R中一個代碼爲數據做替換它們跨越數萬行的框架?

編輯:我可能需要代碼推廣到幾個協變量。因此,例如,除了一天之外,我們可能會有「位置」,所以我們只需要在同一位置平均在同一天對應同一患者的所有行。

+0

Atleast給出了一個可重複的例子。此外,請提及迄今爲止您嘗試的內容。 –

+0

請參閱「聚合」的初學者 – MichaelChirico

+0

這兩個答案和評論都不會取代值,但他們都可能會給你有用的結果。 –

回答

0

需要的輸出可通過以下方式獲得:通過您在group_by選擇的任何變量,這樣你可以添加

library(dplyr) 
df %>% group_by(patient, day) %>% 
    summarize(response_avg = mean(response)) 

這組:

aggregate(a$response, by=list(Category=a$patient,a$date), FUN=mean) 
0

您可以用dplyr包做到這一點很容易更多。我將新變量命名爲「response_avg」,但您可以將其更改爲您想要的內容。

0

只是爲了添加data.table解決方案,如果任何reader是data.table用戶。

library(data.table) 
setDT(df) 
df[, response := mean(response, na.rm = T), by = .(patient, day)] 
df <- unique(df) # to remove duplicates