通过另一个变量的加权值对一个变量进行排名?

问题描述

超级R初学者在这里。我试图通过另一列/变量的加权值来获得某个变量的排名。例如,我有一个如下所示的数据集:

State <- rep(c("MN","MN","OR","ME","CO","HI","HI"),each = 3)
PopA <- c("145","215","200","300","177","155","2013","89","102","3451","565","805","204","650","975","145","2045","789","226","398","763","346","987","1236","765","876","95","45","3457","4557")
PopB <- c("190","7410","523","963","1254","235","3140","4041","896","7458","105","40","5673","638","1444","673","257","4211","869","245","8545","8553","8853","234","635","3456","6754","2244")
inc1 <- c("55000","67000","34000","17000","135000","98000","54000","55000","102000","170000","75000","12000","345000","23000","13000","78000","112000","48000","45000","89000","10000","16000","96000","65000","59000","39000" ) 
inc2 <- c("23000","92000","87000","29000","155000","95000","134000","76000","69000","230000","125000","97000","34500","35000")
data <- data.frame(State,PopA,PopB,inc1,inc2)

我正在尝试获取4个新列,分别命名为Total_rank1_PopA,Total_rank2_PopB,Rank_by_state1_PopA和Rank_by_state2_PopB。在这些列中,我希望获得整个数据集的加权总体A和加权总体B的inc1和inc2排名,然后再按州进行分组。我想通过popA和popB的加权百分位数(加权分位数?)来做到这一点。

当前,我有

ranking <- data %>%
  arrange(inc1,inc2) %>%
  mutate(overall_rank1 = rank(inc1,ties.method = "average"),overall_rank2 = rank(inc2,ties.method = "average"))

ranking2 <- ranking %>%
  group_by(State)%>%
  mutate(state_rank1 = rank(inc1,state_rank2 = rank(inc2,ties.method = "average"))

但是,这只会给我排名性,非加权排名。

有人对此有想法吗?

解决方法

第1步:删除原始数据帧中整数周围的所有引号(这些引号使它们充当字符,无法正确排序)

第二步:为加权人口增加新列

.then((data) => {
    ...

第3步:按增长量对每一行进行排名(第一位是增长率最高的排名)

import pandas as pd

df = pd.read_clipboard(sep='\s\s+')

def highlight(val):

    if 'Too High' in str(val):
        color='yellow'
    elif 'Too Low' in str(val):
        color='green'
    else:
        color=''
    return f'background-color: {color}'

df.style.applymap(highlight)

Step4:根据“ popAGrowth”和“ popBGrowth”对每个状态进行排名

data %>% mutate(popAGrowth = inc1/PopA) %>% mutate(popBGrowth = inc2/PopB) -> data

我希望这对您有所帮助! (如果要丢弃我制作的加权列,则可以在另一个管道中使用“ select()”)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...