Lad*_*zyk 5 group-by r dataframe
我有以下形式的数据:
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
... ...
Run Code Online (Sandbox Code Playgroud)
假设我只有两个观察点(列"障碍")按主题(列"主题",其中主题从1到20编号).
我想按"主题"列的值"分组"行.更准确地说,我想按主题"订购"数据,但保留上面显示的顺序.因此,最终数据将是这样的:
obs subject
1.5904600 12
0.3999592 12
8.1059855 13
2.3656473 13
5.4497484 6
7.2934746 6
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?我想到可能会识别出与主题相对应的每一行which:
which(data$subject==x)
Run Code Online (Sandbox Code Playgroud)
然后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
# ...
Run Code Online (Sandbox Code Playgroud)