根据字符串变量对行重新排序

标签 r sorting row

我需要重新排序类似于下面的数据框。我需要伦敦在任何不同的 Var 中首先出现,但保持 var 的顺序(“pop、gdp、lifespec...)非常重要,因为我之后正在做矩阵代数。

    City      Var value
 Chicago      pop  0.08
  London      pop  0.24
   Paris      pop  0.75
 Chicago      gdp  0.55
  London      gdp  0.49
   Paris      gdp  0.23
 Chicago lifespec  0.45
  London lifespec  0.39
   Paris lifespec  0.28
 Chicago percjobs  0.12
  London percjobs  0.13
   Paris percjobs  0.01

所以我想要的输出如下:

    City      Var value
  London      pop  0.24
 Chicago      pop  0.08
   Paris      pop  0.75
  London      gdp  0.49
 Chicago      gdp  0.55
   Paris      gdp  0.23
  London lifespec  0.39
 Chicago lifespec  0.45
   Paris lifespec  0.28
  London percjobs  0.13
 Chicago percjobs  0.12
   Paris percjobs  0.01

我尝试创建一个 df$rank,其中伦敦的值为 1,其他地区的值为 9。然后我尝试使用 sort(),但所有伦敦值都崩溃在顶部。你有什么想法吗?

最佳答案

在这里收集有关该问题的评论以提供简单的两行代码。

d <- read.table(text='City Var value
 Chicago      pop  0.08
  London      pop  0.24
   Paris      pop  0.75
 Chicago      gdp  0.55
  London      gdp  0.49
   Paris      gdp  0.23
 Chicago lifespec  0.45
  London lifespec  0.39
   Paris lifespec  0.28
 Chicago percjobs  0.12
  London percjobs  0.13
   Paris percjobs  0.01', header=T)

d$Var <- factor(d$Var, unique(d$Var))
d[order(d$Var, d$City != "London"), ]

#       City      Var value
# 2   London      pop  0.24
# 1  Chicago      pop  0.08
# 3    Paris      pop  0.75
# 5   London      gdp  0.49
# 4  Chicago      gdp  0.55
# 6    Paris      gdp  0.23
# 8   London lifespec  0.39
# 7  Chicago lifespec  0.45
# 9    Paris lifespec  0.28
# 11  London percjobs  0.13
# 10 Chicago percjobs  0.12
# 12   Paris percjobs  0.01

关于根据字符串变量对行重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24035379/

相关文章:

javascript - 如何仅更改表格中一行的颜色 (HTML/JavaScript)

r - 尝试从极坐标图片中裁剪出中心圆

r - 从函数发送列名到 ddply

regex - R regex - 匹配直到从末尾开始的第一个字母-空格-数字组合

php:数组按字符串键排序

twitter-bootstrap-3 - Bootstrap 列不是并排的

r - 如何使用 mutate() 生成依赖于其他新变量的前一行值的变量?

bash 排序解决

php - 使用 usort 和 spaceship 运算符正确排序多维数组

r - 根据 R 中的第二列创建新的行值