R语言:如何依据行序变量重新排序数据行?
按指定行顺序提取名称的实现方法
下面针对不同常用工具给出解决方案,覆盖Excel、Python(Pandas)和R语言场景:
Excel 实现
假设Name列在A列(A2:A6为数据行),Row_order列在B列:
- 在C2单元格输入公式:
=INDEX($A$2:$A$6,B2) - 下拉填充到所有行,即可得到按
Row_order指定顺序排列的new_Names列。
Python(Pandas)实现
利用Pandas的索引功能,注意Python是0起始索引,需要将Row_order的数值减1后作为位置索引:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Name': ['a', 'b', 'c', 'd', 'e'], 'Row_order': [4, 5, 1, 3, 2] }) # 生成new_Names列 df['new_Names'] = df['Name'].take(df['Row_order'] - 1) print(df)
运行后new_Names列会得到['d', 'e', 'a', 'c', 'b'],和需求一致。
R语言实现
R是1起始索引,直接用Row_order的数值作为索引即可:
# 构造示例数据 df <- data.frame( Name = c('a', 'b', 'c', 'd', 'e'), Row_order = c(4, 5, 1, 3, 2) ) # 生成new_Names列 df$new_Names <- df$Name[df$Row_order] print(df)
输出结果中new_Names列即为d、e、a、c、b,符合需求。
内容的提问来源于stack exchange,提问作者Fluffy
相关产品推荐
相关产品推荐

