在我的数据框中,我试图根据其各自的频率重命名“名称”列中的某些观测值。也就是说,我想重命名名称频率低于100的观测值。如果任何名称在数据集中出现的次数少于100次,则要在“名称”列中将所有这些观测值重命名为“基础”。这是一个示例:
Game Home Runs Name
1 2 Hank Aaron
2 3 Babe Ruth
3 1 Ted Williams
3 4 Hank Aaron
4 2 Ted Williams
...
如果Ted Williams和Babe Ruth的名字在数据框中出现的次数少于100次,则对于Name列的所有值,它们的名字都将替换为“ Base”。
Game Home Runs Name
1 2 Hank Aaron
2 3 Base
3 1 Base
3 4 Hank Aaron
4 2 Base
...
此外,当我计划使用新的Name向量作为回归中的独立(个体效应)变量进行回归时,我需要将观测值放在同一数据框中。
道歉,如果我过度解释。只是迷路了
答案 0 :(得分:1)
library(forcats)
df %>%
mutate(Name = fct_lump(Name, n = 100, other_level = "Base"))
答案 1 :(得分:0)
您可以使用table
来计算每个Name
在数据框中出现的次数,使用Filter
仅保留那些出现次数少于100次的名称,并在原始数据框中进行匹配使用%in%
并替换。
df$Name[df$Name %in% names(Filter(I, table(df$Name) < 100))] <- 'Base'