我有以下问题:我有一个包含许多变量的数据框 df 。一个变量是 df $ size (非数字)。现在,我要用“其他”一词替换少于20个观测值的所有尺寸。
sort(table(df$size))
这为我提供了我要替换的值的概述。但是,如何在df中替换它们?
df$size[sort(table(df$size))<20]="other"
那行不通。
谢谢!
答案 0 :(得分:1)
或带有dplyr
的选项
library(dplyr)
df %>%
group_by(grp = size) %>%
mutate(size = replace(size, n() < 20, "other")) %>%
ungroup %>%
select(-grp)
答案 1 :(得分:0)
与此相关的东西
set.seed(123)
df <- data.frame(size = as.character(sample(1:5, size = 100, replace = TRUE)),
stringsAsFactors = FALSE)
tabs <- sort(table(df$size))
tab <- tabs[tabs < 20]
df$size[which(df$size %in% names(tab))] <- "other"
答案 2 :(得分:0)
一个library(data.table)
答案:
setDT(df)
cnts <- df[,.N, size]
df <- df[cnts, nomatch= 0L, on= 'size'][, size := ifelse(N < 20, 'other', size)]
类类型table
很难与数据帧一起使用。在这里,我们使用cnts
将所有内容保留在单个对象类中。