【发布时间】:2021-01-12 00:54:56
【问题描述】:
我只是想将每个组的异常值(那些高于 99 个百分位的值)替换为 NA。如果不创建一个全新的冗余数据框,我不知道该怎么做。有什么想法吗?
group <- c('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B')
var1 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 50, 1, 2, 3, 4, 5, 6, 7, 8, 9, 50)
df = data.frame(group, var1)
unique_groups = unique(df$group)
df2 = data.frame()
for(g in 1:length(unique_groups)) {
subset_df <- df[grep(unique_groups[1], df$group), ]
quantiles <- quantile(subset_df$var1, c(.01, .99), na.rm = TRUE)
subset_df$var1[subset_df$var1 > quantiles[2]] <- NA
df2 <- rbind(df2, subset_df)
}
谢谢,
【问题讨论】:
标签: r