gpt4 book ai didi

r - 按出现频率对数据框列进行排序

转载 作者:行者123 更新时间:2023-12-05 08:16:33 25 4
gpt4 key购买 nike

我有一个名为 df 的数据框,假设有三列,

Region ID  Salary
1 A1 100
1 A2 1001
1 A3 2000
1 A4 2431
1 A5 1001
..............
..............
2 A6 1002
2 A7 1002
2 A8 1002
3 A9 3001
3 A10 3001
3 A11 4001

现在我想按区域对列 Salary 进行排序,即使用频率表或其他东西,获取每个区域的出现概率并对它们进行排序。请假设数据集足够大(1000 行)

P.S:任何人都可以建议一个好的方法来做一些。请在您的答案中使用列名,因为真实表格在中间有一些列

提前致谢

                  **EDIT 1**

我觉得我说的不够清楚,谢谢大家的回答,我很抱歉我说的不够清楚:

对于当前的数据集,我们需要创建一个频率表说:

Region  Salary(bin)     Count
1 1K 6
1 5K 3
1 2K 2
1 15K 2
1 0.5K 2
1 24K 1
1 0K 0

使用它我们可以在我们的数据框 df 中添加一个新的列,称为 bin(bucket from histogram)

Region     ID  Salary  (bin)   Count
1 A1 100 1K 6
1 A2 1001 2K 2
1 A3 2000 2K 2
1 A4 2431 5K 3

.....................等等......

我们可以使用:

df$bin <- cut(df$salary, breaks=hist(df$salary)$breaks)

按 Region、Count 和 Salary 排序后,我们得到:

Region     ID  Salary  (bin)   Count
1 A1 100 1K 6
1 A4 2431 5K 3
1 A3 2000 2K 2
1 A2 1001 2K 2

如您所见,我们需要为每个区域创建频率表并进行排序。我使用 Tableau 完成了上述操作,但我想在 R 中自动执行此操作

希望我说清楚了

最佳答案

一种可能的方法是使用 data.table 添加 freq 列,然后相应地对数据进行排序:

library(data.table)
setDT(df)[,freq := .N, by = c("Region","Salary")]

# Sort
df[order(freq, decreasing = T),]

# As a oneliner (thx @Jaap)
setDT(df)[, freq := .N, by = .(Region,Salary)][order(-freq)]

关于r - 按出现频率对数据框列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35036182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com