大家下午好。我正在按日期分析某些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)])
任何想法都值得赞赏。
答案 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