想知道某人是否有汇总和排除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.
答案 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