如何根据R中的频率重命名观测值?

时间:2020-07-12 02:08:03

标签: r dataframe

在我的数据框中,我试图根据其各自的频率重命名“名称”列中的某些观测值。也就是说,我想重命名名称频率低于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向量作为回归中的独立(个体效应)变量进行回归时,我需要将观测值放在同一数据框中。

道歉,如果我过度解释。只是迷路了

2 个答案:

答案 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'