如何在R中合并具有相同名称的行?

时间:2017-04-13 20:10:42

标签: r data-analysis

我尝试使用mean运算符合并数据集的行。 基本上,我想将数据集1转换为数据集2(见下文)

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

如何在R上执行此操作?

请注意,与我在此处给出的示例相比,我的数据集非常大,我无法查看数据集,根据其ID对行进行分组,然后找到colMeans。

我的想法是订购数据集,为每个id分开度量,然后找到每个均值并重新组合数据。但是,这将非常耗时。 如果有人能帮助我使用直接代码甚至是for循环,我真的很感激。

2 个答案:

答案 0 :(得分:2)

您也可以在dplyr中轻松完成此操作,假设您的数据位于df

library(dplyr)

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

答案 1 :(得分: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