在R中对数据帧列进行排序

在R中对数据帧列进行排序,r,dataframe,ranking,R,Dataframe,Ranking,我有数据框,下面是它的样本数据 Company Category Margin SBI BK 34.5 PNB BK 39.5 UCO BANK BK 39.9 BANK BK 41.3 INDIAN BANK BK 42.3 DENA BANK BK 44.5 VIJAYA BANK BK 44.5

我有数据框,下面是它的样本数据

Company     Category    Margin
SBI             BK      34.5
PNB             BK      39.5
UCO BANK        BK      39.9
BANK            BK      41.3
INDIAN BANK     BK      42.3
DENA BANK       BK      44.5
VIJAYA BANK     BK      44.5
UNION BANK      BK      47.6
CENTRAL BANK    BK      49.8
INFOSYS         IT      5.6
HCL TECH        IT      5.9
TCS             IT      6.9
CMC             IT      12.6
TECHMAHINDRA    IT      12.6
COGNIZANT       IT      15.8
IGATE           IT      22.4
WIPRO           IT      22.9
HEXAWARE        IT      34.8
MAHINDRA SATYAM IT      34.8
DR. REDDYS      PH      14.5
SUN PHARMA      PH      19.2
CIPLA           PH      23.9
LUPIN           PH      23.9
DIVIS LABS      PH      29
仔细查看数据框可以看出,它是按类别、边距和公司列排序的

现在,我的要求是添加一个名为Ranking的新列,并为每一组类别提供一个从1开始的排名。每当列表上出现新类别时,排名编号应从1开始

样本输出:

Company     Category    Margin     Ranking
SBI             BK      34.5       1
PNB             BK      39.5       2
UCO BANK        BK      39.9       3 
BANK            BK      41.3       4
INDIAN BANK     BK      42.3       5
DENA BANK       BK      44.5       6
VIJAYA BANK     BK      44.5       7
UNION BANK      BK      47.6       8
CENTRAL BANK    BK      49.8       9
INFOSYS         IT      5.6        1
HCL TECH        IT      5.9        2
TCS             IT      6.9        3
CMC             IT      12.6       4
TECHMAHINDRA    IT      12.6       5
COGNIZANT       IT      15.8       6
IGATE           IT      22.4       7
WIPRO           IT      22.9       8
HEXAWARE        IT      34.8       9
MAHINDRA SATYAM IT      34.8       10
DR. REDDYS      PH      14.5       1
SUN PHARMA      PH      19.2       2
CIPLA           PH      23.9       3
LUPIN           PH      23.9       4
DIVIS LABS      PH      29         5
进一步要求

假设输入数据集是完全之字形的。然后

unique(df$Category)   # gives 5 different category
[1] "BK" "IT" "PH" "MT" "EG"
格式化后,返回相同的值

unique(df$Category)   # gives only 3 categories. rest of 2 categories were deleted.
[1] "BK" "IT" "PH"
注意:在格式化输入数据集以使其不丢失值的过程中,完成了几个类别的删除

注意:返回的数据帧应将行名称作为类别

在对数据帧进行排序之后,我想编写一个函数,其中我将把排序作为参数传递给函数。 该函数应返回一个数据框,其中包含每个类别中具有该特定排名的公司。如果在任何类别中,如果没有具有此类特定排名的公司,则将返回NA

head(companyRanks(3), 4) returns
    COMPANY     CATEGORY
BK  UCO BANK        BK      
IT  TCS             IT      
PH  CIPLA           PH      
MT  <NA>            MT
EG  <NA>            EG

head(companyRanks(10), 4)  # returns:
            COMPANY     CATEGORY
BK             <NA>           BK  # Since there is no company with rank 10 under category BK, NA returned
IT  MAHINDRA SATYAM           IT      
PH             <NA>           PH      
MT             <NA>           MT
EG             <NA>           EG
head(公司银行(3),4)返回
公司类别
美国加州大学银行
它是它
西普拉
MT MT
例如
负责人(公司银行(10),4)#返回:
公司类别
BK BK#由于在BK类别下没有排名10的公司,NA返回
是马欣德拉·萨蒂亚姆吗
酸碱度
MT MT
例如

是否有任何函数可以轻松获取此类需求?

假设您的数据帧名为df,请尝试以下操作:

df$Ranking <- ave( df$Margin, df$Category, FUN=rank )

df$Ranking+1,但我甚至不认为需要“rank”,因为数据已经排序,他们似乎并不关心关系。类似于
df$Ranking Hi Sophia/Ananda Maho,你能看看问题中添加的附加要求吗?对不起,在添加这些新要求后,我不理解你的问题。