簡體   English   中英

如何根據 R 中的頻率重命名觀測值?

[英]How to rename observations based upon frequency in R?

在我的 dataframe 中,我試圖根據它們各自的頻率重命名“名稱”列中的某些觀察。 也就是說,我想重命名名稱頻率低於 100 的觀測值。如果任何名稱在數據集中出現的次數少於 100 次,我想在名稱列中將所有這些觀測值重命名為“Base”。 這是一個例子:

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
...

此外,我需要將觀察結果放在同一個 dataframe 中,因為我計划使用新名稱向量作為回歸中的獨立(個體效應)變量來運行回歸。

如果我過度解釋,請道歉。 只是有點失落

library(forcats)

df %>%

   mutate(Name = fct_lump(Name, n = 100, other_level = "Base")) 

您可以使用table計算每個Name在 dataframe 中出現的次數,使用Filter僅保留那些出現次數少於 100 次的名稱,使用%in%在原始 dataframe 中匹配它們並替換。

df$Name[df$Name %in% names(Filter(I, table(df$Name) < 100))] <- 'Base'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM