2

我知道在 R 中按频率排序非常简单。给定一个 data.framedf和一个column1带有数值的列:

order(df$column1,decreasing=T)

我的 data.frame 是rbind()在较小的 data.frames 上使用的结果。每个原始 data.frame 都有一个列Trial,其值范围从 1 到 nrow(GralData),尽管缺少一些数字(由于异常值删除)。另一列被调用TrialType并且可以有两个可能的字符值:"Regular""Random"

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

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

但是,相反,此命令对行进行排序,同时牢记行来自的 data.frames。因此,不是将所有数据混合,而是根据Trial列值的标准进行排序,值首先按 data.frame 排序,然后按 的值排序Trial。所以该Trial列看起来像:

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

我希望它是

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

我希望我说清楚了。这是一个很小的问题,我确信我一定遗漏了一些基本的东西,但我在谷歌上广泛搜索,并没有找到任何关于该问题的参考。非常感谢任何建议。

4

1 回答 1

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))。

于 2013-03-14T15:13:10.777 回答