R Sort/Order 使用变量的数据帧
R Sort/Order dataframes using variables
我的问题与其他几个 sorting/ordering 问题相似,但又不相同。问题基本上是当要排序的列存储在变量中时如何 sort/order R 中的数据帧或数据表。
假设我有一个数据框
#create data frame
df <- data.frame(a=c(2,2,2,2,1,1,3,3,3,3,4,4),
b=c("c","c","a","a","a","b","b","d","d","d","e","e"),
c=c(123,223,1232,122,1232,345,243,456,5676,34,233,111),
stringsAsFactors=F)
有多种方法可以订购数据框。一些基本方法是:
#ordering dataframe by column 1
df[with(df,order(df[,1])), ]
#ordering dataframe by column name 'a'
df[with(df,order(df[,"a"])), ]
同样,对于数据表:
library(data.table)
dt <- as.data.table(df)
dt[order(a)]
但是,如果我的排序依据列存储在变量 var
中,我该如何使用它?
#sort by column 1
var <- 1
#sort by column name "a"
var <- "a"
更进一步,如何按多列排序?
#sort by columns 1 and 2
var1 <- 1
var2 <- 2
试试这个
df[order(df[[var]]),]
感谢 David 的编辑
或者这个,如果你有多个条件
df[order(df[,var]),]
我的问题与其他几个 sorting/ordering 问题相似,但又不相同。问题基本上是当要排序的列存储在变量中时如何 sort/order R 中的数据帧或数据表。
假设我有一个数据框
#create data frame
df <- data.frame(a=c(2,2,2,2,1,1,3,3,3,3,4,4),
b=c("c","c","a","a","a","b","b","d","d","d","e","e"),
c=c(123,223,1232,122,1232,345,243,456,5676,34,233,111),
stringsAsFactors=F)
有多种方法可以订购数据框。一些基本方法是:
#ordering dataframe by column 1
df[with(df,order(df[,1])), ]
#ordering dataframe by column name 'a'
df[with(df,order(df[,"a"])), ]
同样,对于数据表:
library(data.table)
dt <- as.data.table(df)
dt[order(a)]
但是,如果我的排序依据列存储在变量 var
中,我该如何使用它?
#sort by column 1
var <- 1
#sort by column name "a"
var <- "a"
更进一步,如何按多列排序?
#sort by columns 1 and 2
var1 <- 1
var2 <- 2
试试这个
df[order(df[[var]]),]
感谢 David 的编辑 或者这个,如果你有多个条件
df[order(df[,var]),]