根据数据框中另一列的唯一值查找一列的所有组合

  • 本文关键字:一列 查找 组合 唯一 数据 r
  • 更新时间 :
  • 英文 :


假设我有一个数据帧

data.frame(v1 = c(1,1,1,2,2,3), v2 = c(6,1,6,3,4,2))
v1 v2
1  1  6
2  1  1
3  1  6
4  2  3
5  2  4
6  3  2

是否有一个R函数返回以下数据帧?即v2与基于v1

的唯一值的组合
data.frame(v1 = rep(1:3, 6), v2 = c(6,3,2, 6,4,2, 1,3,2, 1,4,2, 6,3,2, 6,4,2))
v1 v2
1   1  6
2   2  3
3   3  2
4   1  6
5   2  4
6   3  2
7   1  1
8   2  3
9   3  2
10  1  1
11  2  4
12  3  2
13  1  6
14  2  3
15  3  2
16  1  6
17  2  4
18  3  2

注:我认为我的问题没有重复。这里v2有重复的值,输出数据帧必须保持顺序(即v1 = c(1,2,3, 1,2,3, ...))。所需输出有18行,但expand.grid给出36行,crossing给出15行

试试下面的代码

dfout <- data.frame(
v1 = unique(df$v1),
v2 = c(t(rev(expand.grid(rev(with(df, split(v2, v1)))))))
)

,

> dfout
v1 v2
1   1  6
2   2  3
3   3  2
4   1  6
5   2  4
6   3  2
7   1  1
8   2  3
9   3  2
10  1  1
11  2  4
12  3  2
13  1  6
14  2  3
15  3  2
16  1  6
17  2  4
18  3  2

相关内容

  • 没有找到相关文章

最新更新