我知道在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...
我希望自己清楚明白。这是一个非常小的问题,我确信我必须遗漏一些基本的东西,但我广泛搜索了这个并没有找到任何问题的参考。任何建议都非常感谢。
答案 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)
)。