首页 > 解决方案 > 按值和一组多组列对R中的数据框进行排序

问题描述

我找不到如何结合两个特定条件。

假设我们有两列。第一栏是工资,第二栏是城市,如下:

df <- data.frame(salary = c(100, 200, 150, 300, 350),
city = c("nyc", "la", "la", "nyc", "la")) 

现在的情况是只显示city = "nyc"和的值salary以降序排列。如何从包含多个组的列中只显示一个组?

标签: rdataframe

解决方案


我们将“City”为“nyc”的行子集,然后order按降序排列“Salary”列

df1 <- df[df$City == 'nyc',]
df1[order(-df1$Salary),]
#    Salary City
#4    300  nyc
#1    100  nyc

如果我们只需要 'Salary' 列

with(df, sort(Salary[City == 'nyc'], decreasing = TRUE))
#[1] 300 100

或与dplyr

library(dplyr)
df %>%
    filter(City == 'nyc') %>%
    arrange(desc(Salary))

数据

df <- data.frame(Salary = c(100, 200, 150, 300, 350), 
                 City = c("nyc", "la", "la", "nyc", "la"))

推荐阅读