我正在处理一个数据集,其中包含有关打击人口贩运组织的信息。这些组织由组织名称或组织主页的 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
变成类似的东西
> df2
x y z
Item1 1 3
Item2 1 2
Item3 1 2
Item4 0 2
在这个例子中,当然,我想保留 Var2 的最大值和 Var3 的最小值,并且只保留唯一的 Var1 值。
谁能建议一种针对大型数据集执行此操作的系统方法?预先感谢您的帮助!
最佳答案
一种选择是使用 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
或者,同样简单的是包 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
关于r - 在 R 中逐个折叠数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14151427/