[英]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.