通过降低R中的频率来对绑定的data.frame进行排序

时间:2013-03-14 15:10:28

标签: r sorting dataframe

我知道在R中按频率排序非常简单。给出data.frame df和列column1及其数值:

order(df$column1,decreasing=T)

我的data.frame是在较小的data.frames上使用rbind()的结果。每个原始data.frame都有一个名为Trial的列,值为1到nrow(GralData),但有些数字丢失(由于异常值删除)。另一列称为TrialType,可以有两个可能的字符值:"Regular""Random"

我想要做的是从GralData创建两个data.frames。一个仅包含TrialType中的Regular,另一个仅包含Random。此外,我希望new.data.frame根据Trial的值进行递减排序。这就是我正在使用的:

GralData_Regular <- GralData[GralData$TrialType=="Regular" & order(GralData$Trial,decreasing=TRUE),]

但是,相反,这个命令正在排序行,记住行来自的data.frames。因此,不是将所有数据混合在一起,而是根据Trial列的值的标准来命令 ,首先按data.frame排序值,然后按值的顺序排序{ {1}}。因此Trial列看起来像:

Trial

我希望它是

 1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,etc...

我希望自己清楚明白。这是一个非常小的问题,我确信我必须遗漏一些基本的东西,但我广泛搜索了这个并没有找到任何问题的参考。任何建议都非常感谢。

1 个答案:

答案 0 :(得分:4)

您必须分两步完成:

## Subset the original data frame    
GralData_Regular <- GralData[GralData$TrialType=="Regular",]
## Sort it
GralData_Regular <- GralData_Regular[order(GralData_Regular$Trial,decreasing=TRUE),]

&运算符用于组合逻辑向量。这里你的第一个条件是逻辑向量(GralData$TrialType=="Regular"),但你的第二个条件是数字(order(GralData$Trial,decreasing=TRUE))。