我有一个数据集,需要按参与者 (RECORDING_SESSION_LABEL) 和试验编号进行排序。然而,当我使用 R 对数据进行排序时,我没有尝试过将变量按照我想要的正确数字顺序排列。参与者变量输出正常,但试验 ID 变量输出的顺序错误,不符合我的需要。
使用:
fix_rep[order(as.numeric(RECORDING_SESSION_LABEL), as.numeric(Trial_number)),]
参与者 ID 如下:
118 118 118等211 211 211等306 306 306等(很好)
Trial_number 的结果为:
1 1 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 2 2 20 20 ....(这不是我想要的 - 它似乎是按词汇而不是按数字排序)
我希望每个参与者编号中的 Trial_number 的顺序如下:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 ....
我已经检查过这些变量不是因素,而是数字,并且也尝试过不使用“as.numeric”,但没有任何乐趣。环顾四周,我看到一些建议,sort()
和 mixedsort()
可能可以代替“order”,但两者都会出现错误。我慢慢地为一件我认为应该很简单的事情而烦恼。任何人都可以帮助阐明如何做到这一点以获得我需要的东西吗?
最佳答案
即使您声称它不是一个因素,但它的行为确实就像是一个因素一样。测试某物是否是一个因素可能很棘手,因为因素只是一个带有级别属性和类标签的整数向量。如果它是一个因素,您的代码需要调用嵌套在 as.numeric()
中的 as.character()
:
fix_rep[order(as.numeric(RECORDING_SESSION_LABEL), as.numeric(as.character(Trial_number))),]
要真正确定这是否是一个因素,我推荐使用 str()
函数:
str(试验编号)
关于r - 在 R 中对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11362952/