2017-04-13 223 views
0

我想通過使用均值運算符合並數據集的行。 基本上,我想數據組1到數據集2(見下文)如何合併R中具有相同名稱的行?

1. ID MEASUREMENT  2. ID MEASURE 
    A  20    A  22.5 
    B  30    B  30 
    A  25    . 
    .      . 
    .      . 

我怎樣才能做到這一點R上轉換?

請注意,與我在此給出的示例相比,我的數據集非常大,我無法查看數據集,根據它們的ID對行進行分組,然後查找colMeans。

我的想法是對數據集進行排序,爲每個id分開度量值,然後查找每個均值並重新組合數據。但是,這將非常耗時。 我真的很感激,如果有人可以幫助我一個直接的代碼,甚至for循環。

回答

1

此代碼應該能夠爲您做到這一點。

library(data.table) 
setDT(dat) 
dat = dat[ , .(MEASURE = mean(MEASUREMENT)), by = .(ID)] 

只是要稍微更完整的我用下面的例子和方式的基礎R.做到這一點扔

數據:

dat = data.frame(ID = c("A","A","A","B","B","C"), MEASUREMENT = c(1:3,61,13,7)) 

由於只有基礎R的功能:

aggregate(MEASUREMENT ~ ID, FUN = mean, dat) 
    ID MEASUREMENT 
1 A   2 
2 B   37 
3 C   7 

隨着data.table:

library(data.table) 
setDT(dat) 
dat = dat[ , .(MEASURE = mean(MEASUREMENT)), by = .(ID)] 
> dat 
    ID MEASURE 
1: A  2 
2: B  37 
3: C  7 
+0

謝謝,我得到了通過 –

2

您也可以在dplyr做到這一點很容易,假設你的數據在df

library(dplyr) 

df <- df %>% 
    group_by(ID) %>% 
    summarize(MEASURE = mean(MEASUREMENT))