r - 在 R 中逐个折叠数据

标签 r dataframe group-by aggregate

我正在处理一个数据集,其中包含有关打击人口贩运组织的信息。这些组织由组织名称或组织主页的 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/

相关文章:

python - 获取符合某些条件的 Pandas DataFrame 的列和行索引对

R编程: Identifying Composite Keys

r - 日期计算用天而不是秒

Python pandas 从嵌入 Web txt 文件中的 csv 创建数据框

r - 将 dfmSparse 从 Quanteda 包转换为 R 中的数据框或数据表

python - 将 pandas groupby() 中的值提取到结合单个值和 numpy 数组的新数据集中

mysql - 选择多个最大值

SQL:按相似值对结果进行计数和分组的有效方法

r - 根据列中的唯一值查找两个最大日期之间的最小日期

R将数据分组