2017-04-13 225 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))