根据R中的条件重命名因子级别

根据R中的条件重命名因子级别,r,aggregate,plyr,R,Aggregate,Plyr,我想将计数小于n的所有因子合并成一个名为“Else”的因子 例如,如果n=3,则在以下df中,我希望将“c”、“d”和“e”组合为“Else”: 我首先得到了一个带有所有低计数值的df: library(plyr) lowcounts = ddply(df, "y", function(z){if(nrow(z)<3) nrow(z) else NULL}) 库(plyr) lowcounts=ddply(df,“y”,函数(z){if(nrow(z)为什么不这样呢 library(da

我想将计数小于n的所有因子合并成一个名为“Else”的因子

例如,如果n=3,则在以下df中,我希望将“c”、“d”和“e”组合为“Else”:

我首先得到了一个带有所有低计数值的df:

library(plyr)
lowcounts = ddply(df, "y", function(z){if(nrow(z)<3) nrow(z) else NULL})
库(plyr)

lowcounts=ddply(df,“y”,函数(z){if(nrow(z)为什么不这样呢

library(data.table)
dt <- data.table(df)
dt[,ynew := ifelse(.N < 3, "else",as.character(y)), by = "y"]
库(data.table)
dt另一种选择:

#your dataframe
df = data.frame(x=c(1:10), y=c("a","a","a","b","b","b","c","d","d","e"))

#which levels to keep and which to change
res <- table(df$y)
notkeep <- names(res[res < 3])
keep <- names(res)[!names(res) %in% notkeep]
names(keep) <- keep

#set new levels
levels(df$y) <- c(keep, list("else" = notkeep))

df
#    x    y
#1   1    a
#2   2    a
#3   3    a
#4   4    b
#5   5    b
#6   6    b
#7   7 else
#8   8 else
#9   9 else
#10 10 else
#您的数据帧
df=数据帧(x=c(1:10),y=c(“a”、“a”、“a”、“b”、“b”、“c”、“d”、“d”、“e”))
#哪些级别需要保持,哪些级别需要更改

res谢谢…我对data.table不太熟悉。我来看看。
#your dataframe
df = data.frame(x=c(1:10), y=c("a","a","a","b","b","b","c","d","d","e"))

#which levels to keep and which to change
res <- table(df$y)
notkeep <- names(res[res < 3])
keep <- names(res)[!names(res) %in% notkeep]
names(keep) <- keep

#set new levels
levels(df$y) <- c(keep, list("else" = notkeep))

df
#    x    y
#1   1    a
#2   2    a
#3   3    a
#4   4    b
#5   5    b
#6   6    b
#7   7 else
#8   8 else
#9   9 else
#10 10 else