[英]group columns in R dataframe based on values in another column
Consider the following pair of lists考虑以下一对列表
ID<-c("A", "B")
Var2<-c("T_X", "X_F", "R_X", "T_Y", "Y_F", "R_Y")
I have created the following dataframe我创建了以下 dataframe
df2<-expand.grid(ID, Var2)
The resultant dataframe is as follows得到的 dataframe 如下
Var1 Var2
1 A T_X
2 B T_X
3 A X_F
4 B X_F
5 A R_X
6 B R_X
7 A T_Y
8 B T_Y
9 A Y_F
10 B Y_F
11 A R_Y
12 B R_Y
I would like to reorder the dataframe by Var1 column so that all values corresponding to A are together and likewise with B. (Note this is a toy dataset and the real number of unique values in Var1 can be much higher).我想按 Var1 列对 dataframe 重新排序,以便与 A 对应的所有值都在一起,并且与 B 一样。(注意这是一个玩具数据集,Var1 中唯一值的实际数量可能要高得多)。
The following is the expected output以下是预期的output
Var1 Var2
1 A T_X
3 A X_F
5 A R_X
7 A T_Y
9 A Y_F
11 A R_Y
2 B T_X
4 B X_F
6 B R_X
8 B T_Y
10 B Y_F
12 B R_Y
I have tried df2%>% group_by(Var1).我试过 df2%>% group_by(Var1)。 this has left the dataframe unchanged.
这使 dataframe 保持不变。
I request someone to help me here.我请求有人在这里帮助我。
We can do it in reverse.我们可以反过来做。 No need of any
order
ing afterwards or any packages之后无需任何
order
或任何包裹
setNames(expand.grid(Var2, ID)[2:1], c("Var1", "Var2"))
-output -输出
# Var1 Var2
#1 A T_X
#2 A X_F
#3 A R_X
#4 A T_Y
#5 A Y_F
#6 A R_Y
#7 B T_X
#8 B X_F
#9 B R_X
#10 B T_Y
#11 B Y_F
#12 B R_Y
Or use crossing
from tidyr
或者使用来自
tidyr
的crossing
library(tidyr)
crossing(ID, Var2 = factor(Var2, levels = Var2))
-output -输出
# ID Var2
# <chr> <chr>
# 1 A T_X
# 2 A X_F
# 3 A R_X
# 4 A T_Y
# 5 A Y_F
# 6 A R_Y
# 7 B T_X
# 8 B X_F
# 9 B R_X
# 10 B T_Y
# 11 B Y_F
# 12 B R_Y
You can use tidyr
's expand_grid
which works as expected here.您可以使用
tidyr
的expand_grid
,它在此处按预期工作。
tidyr::expand_grid(ID, Var2)
# ID Var2
# <chr> <chr>
# 1 A T_X
# 2 A X_F
# 3 A R_X
# 4 A T_Y
# 5 A Y_F
# 6 A R_Y
# 7 B T_X
# 8 B X_F
# 9 B R_X
#10 B T_Y
#11 B Y_F
#12 B R_Y
However, you can always order
df2
output to get output in required format.但是,您始终可以
order
df2
output 以获取所需格式的 output。
df2 <- expand.grid(ID, Var2)
df2[order(df2$Var1), ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.