【问题标题】:Summing and dividing by different categories conversion from Python to R [duplicate]从Python到R的不同类别转换的求和和除法[重复]
【发布时间】:2015-04-30 16:52:08
【问题描述】:

我有一组包含类别值的向量,我们称它们为 C1、C2 ……我有一个频率向量,称为 Fr。所有向量的长度相同。我想将 Fr 中的频率值除以取决于类别的总和。在 Python 中使用 numpy 这相当容易。

# Find unique categories
unqC1 = np.unique(C1)
unqC2 = np.unique(C2)
# For each unique category in C1 and C2 sum frequencies and normalize 
for uC1 in unqC1:
    for uC2 in unqC2:
        mask = (uC1 == C1) & (uC2 == C2)
        nrmFactor = np.sum(Fr[mask])
        Fr[mask] /= nrmFactor

如何在 R 中做到这一点?为简单起见,假设我在 R 中有一个表 X,其中包含 X$Fr、X$C1 和 X$C2 列。

【问题讨论】:

  • 请张贴输入数据和预期输出
  • 如果您提供一些具有预期结果的示例数据,其他人会更容易帮助您。尽管如此,查找dplyr 并查看这些小插曲,我想您会通过使用group_bysummarise 找到一些您所追求的示例

标签: python r numpy sum


【解决方案1】:

我不完全确定,但看看这是否实现了目标:

X$nrmFactor <- ave(X$Fr, X$C1, X$C2, FUN=function(x) sum(x)/length(x))

ave 函数为第二个参数和 FUN 之前的任何其他参数定义的类别中的每个案例计算一个值。这个实现会给你一个平均值。由于 ave 的默认函数是 mean,即(平均)平均,您可以省略 FUN 参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多