创建当前行选择之外其他组均值的向量

时间:2019-02-11 23:08:57

标签: r shiny

大家下午好。我正在按日期分析某些IP地址的延迟。我有一个向量,该向量包含IP地址的串联-日期作为字符,称为“ ipdate”,另外一个向量的平均值为“ ipdate”列,称为“ ipdateMean”。这给了我一周中所选日期的特定IP地址的平均值。

我想做的是将其与具有相同日期的其他IP地址进行比较,以便用户可以看到他们选择的特定IP地址如何与所有其他IP地址进行比较。我的想法是创建一个单独的向量,称为“ ip_not_mean”,该向量可计算特定日期所有其他IP地址的平均值,但不包括当前行中IP地址的平均值。见下文

ipdate                         ipdateMean           ip_not_mean
123.32.56.78 - 2019.02.02         10                     30
123.45.67.34 - 2019.02.02         20                     26.6667
123.45.78.90 - 2019.02.02         30                     23.3333
123.45.78.56 - 2019.02.02         40                     20

我尝试了这个,但似乎没有用。

dtCLIPKey$ip_not_mean <- mean(dtCLIPKey$ipdateMean[which(dtCLIPKey$ipdate != dtCLIPKey$ipdate)])

任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:0)

使用data.table,您可以执行以下操作:

setDT(dtCLIPKey)[, ip_not_mean := mean(dtCLIPKey[ipdate != .BY, ipdateMean]), by = ipdate]

请注意,这仅在ipdate的每个值都是唯一的情况下才有效。如果不是,我将创建一个对每一行进行计数的计数列。代码如下:

setDT(dtCLIPKey)[, count := 1:.N][, ip_not_mean := mean(dtCLIPKey[count != .BY, ipdateMean]), by = count]

然后,您可以输入以下内容来摆脱count列:

dtCLIPKey$count = NULL