r - 如何在R中的数据帧的一列中对具有相同值的行进行配对

标签 r dataframe group-by

我有以下形式的数据:

set.seed(1234)
data <- data.frame(cbind(runif(40,0,10), rep(seq(1,20,1), each = 2)))
data <- data[sample(nrow(data)),]
colnames(data) <- c("obs","subject")
head(data)

    obs      subject
1.5904600      12
8.1059855      13
5.4497484       6
0.3999592      12
2.5880982      19
2.6682078       9
   ...         ...

假设我只有两个观察结果(列“obs”)按主题(列“主题”,其中主题从 1 到 20 编号)。

我想按“主题”列的值对行进行“分组”。更准确地说,我想按主题“订购”数据,但保留上面显示的顺序。因此,最终数据将是这样的:
    obs      subject
1.5904600      12
0.3999592      12
8.1059855      13
2.3656473      13
5.4497484       6
7.2934746       6

有任何想法吗 ?我想也许用 which 来标识与主题相对应的每一行:
which(data$subject==x)

然后 rbind这些行在一个循环中,但我相信有一种更简单、更快的方法来做到这一点,不是吗?

最佳答案

转换为具有级别的因子,然后排序:

data$group <- factor(data$subject, levels = unique(data$subject))
data[ order(data$group), ]

#           obs subject group
# 1  1.59046003      12    12
# 4  0.39995918      12    12
# 2  8.10598552      13    13
# 30 2.18799541      13    13
# ...

关于r - 如何在R中的数据帧的一列中对具有相同值的行进行配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39734344/

相关文章:

RStudio Shiny 错误: there is no package called "shinydashboard"

r - 文件错误(文件名, "r",编码=编码): cannot open the connection

r - plotly 中的 add_trace,用于我的特定图形的跟踪

Python 基于每行动态列的变量查找

sql - 数据库行为 HAVING-SUM vs WHERE/DISTINCT vs GROUP BY

r - 使用箭头分配函数作为 R purrr map2

python - 在 Pandas 中使用数据透视表时,有没有办法保持 nan 值存在?

r - 为什么即使将数据集转换为 ts 文件进行时间序列分析后,我仍会收到此错误消息?

mysql - 如何在 SQL 查询中按客户名称合并总成本?

php mysql 将复选框返回值与字段值进行比较