汇总不包括inf

时间:2017-10-07 00:15:07

标签: r

想知道某人是否有汇总和排除Inf值的解决方案。例如

df <- data.frame(Id = c(1:9),
         Fact = c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
         Values = c(10, 5, 14, 3, 1, 10/0, 7, 11, 22))

请注意,Id 6的值为Inf

尝试这一点,请注意事实B的最大值将是Inf

maxvalues <- aggregate(Values~Fact,df,max, na.rm=TRUE)
maxvalues

想要事实B的最大值为3(这将是除Inf之外的值)。如果可能的话,希望坚持使用基地R.

1 个答案:

答案 0 :(得分:3)

使用条件为x的匿名函数:

aggregate(Values ~ Fact, df, function(x) max(x[x < Inf], na.rm = TRUE))
#   Fact Values
# 1    A     14
# 2    B      3
# 3    C     22

或者在聚合之前删除这些行:

aggregate(Values ~ Fact, df[df$Values < Inf, ], max, na.rm = TRUE)
#   Fact Values
# 1    A     14
# 2    B      3
# 3    C     22