从R中的列聚合函数中提取数据

时间:2014-07-12 23:23:13

标签: r aggregate

我有一个大型数据库,我使用聚合函数从中提取了一个数据值(x):

library(plotrix)
aggregate(mydataNC[,c(52)],by=list(patientNC, siteNC, supNC),max)

输出:

enter image description here

每个(x)值在该数据库中的标题为(dist)的列中具有相应的距离值。 提取值dist并添加到表中的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

我可能先从merge()开始。这是一个可重复的小例子,您可以使用它来查看正在进行的操作并对其进行修改以使用您的数据:

# generate bogus data and view it
x1 <- rep(c("A", "B", "C"), each = 4)
x2 <- rep(c("E", "E", "F", "F"), times = 3)
y1 <- rnorm(12)
y2 <- rnorm(12)
md <- data.frame(x1, x2, y1, y2) 

> head(md)

  x1 x2         y1         y2
1  A  E -1.4603164 -0.9662473
2  A  E -0.5247227  1.7970341
3  A  F  0.8990502  1.7596285
4  A  F -0.6791145  2.2900357
5  B  E  1.2894863  0.1152571
6  B  E -0.1981511  0.6388998


# aggregate by taking maximum of each unique (x1, x2) combination
md.agg <- with(md, aggregate(y1, by = list(x1, x2), FUN = max))
names(md.agg) <- c("x1", "x2", "y1")

>  md.agg 
  x1 x2         y1
1  A  E -0.5247227
2  B  E  1.2894863
3  C  E  0.9982510
4  A  F  0.8990502
5  B  F  2.5125956
6  C  F -0.5916491


# merge y2 into the aggregated data
md.final <- merge(md, md.agg)

> md.final

  x1 x2         y1         y2
1  A  E -0.5247227  1.7970341
2  A  F  0.8990502  1.7596285
3  B  E  1.2894863  0.1152571
4  B  F  2.5125956 -0.2217510
5  C  E  0.9982510  0.6813261
6  C  F -0.5916491  1.0348518