【问题标题】:Sort one dataframe based on another dataframe根据另一个数据帧对一个数据帧进行排序
【发布时间】:2015-04-17 19:47:05
【问题描述】:

假设我有两个数据框 abc 和 xyz:

 abc
 batch_id    file_number  
 1            23.OH3
 1            28.OG2
 2            28.OI1
 2            40.OE1

 xyz
 file_number
 28.OI1
 23.OH3
 40.OE1
 28.OG2

如何根据abc$file_numberxyz$file_number 进行排序

【问题讨论】:

  • 不清楚预期的输出是什么。也许xyz[match(abc$file_number, xyz$file_number),, drop=FALSE]

标签: r sorting


【解决方案1】:

如果您确定表的行数相同...

order_vec <- order(xyz$filenumber)
abc[order_vec,]

【讨论】:

  • 您的意思是在第二个代码行上使用order_vec 吗?此外,即使不确定这实际上是 OP 所要求的(参见@akrun 的评论)
  • 您说的完全正确...已更正。我也不确定,但我猜到了:-)
【解决方案2】:

试试:

order.index <- sapply(xyz$filenumber, function(x) which(abc$file_number==x))
xyz$file_number[order.index]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多