2017-04-22 81 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