在R中逐个折叠数据

Nin*_*ina 2 r collapse dataframe

我正在处理一个包含反人口贩运组织信息的数据集.组织由组织名称或组织主页的Web地址标识.我想根据具体情况有条件地删除这个数据框,这样我就会留下一组唯一的标识符(就我的数据而言,无论是组织的名称还是组织的网址)对于每种情况以及这些情况的大约1000多个数字属性,这些属性是崩溃之前标识符与之相关联的许多行的最高值或最低值.为了举例说明,我想转向:

> df1
x      y     z
Item1  0     3
Item1  1     4
Item2  1     2
Item3  1     3
Item2  1     5
Item3  1     2
Item4  0     2
Run Code Online (Sandbox Code Playgroud)

变成类似的东西

> df2
x     y      z
Item1  1     3
Item2  1     2
Item3  1     2
Item4  0     2
Run Code Online (Sandbox Code Playgroud)

当然,在这个例子中,我想保留Var2的最大值和Var3的最小值,并保留唯一的Var1值.

任何人都可以建议一个系统的方法来做大数据集吗?在此先感谢您的帮助!

And*_*rie 6

一种选择是使用plyr包:

library(plyr)
ddply(df, .(x), summarize, y=max(y), z=min(z))
      x y z
1 Item1 1 3
2 Item2 1 2
3 Item3 1 2
4 Item4 0 2
Run Code Online (Sandbox Code Playgroud)

或者,就像包装一样简单data.table.如果您的数据非常大,此选项可能会大大加快.

library(data.table)
data.table(df)[, list(y=max(y), z=min(z)), by=x]
       x y z
1: Item1 1 3
2: Item2 1 2
3: Item3 1 2
4: Item4 0 2
Run Code Online (Sandbox Code Playgroud)