在r中一对多合并两列
Merge two colums one to many in r
d1 = c("2a", "3a")
d2 = c("k1", "k2")
现在,我需要在一个新向量中创建一个列,比如 'vec',如下所示:
vec = c("2a-k1", "2a-k2", "3a-k1", "3a-k2")
基本上我只需要一个包含两列的每个组合的列。
合并选项没有帮助。任何意见是极大的赞赏。
我假设您的 vec
中有错字,因为您说“每个组合都来自两列”。如果是这样,那么这应该有效
x <- expand.grid(d1, d2, stringsAsFactors = FALSE)
x$d3 <- paste(x[,"Var1"], x[,"Var2"], sep = "-")
> x
Var1 Var2 d3
1 2a k1 2a-k1
2 3a k1 3a-k1
3 2a k2 2a-k2
4 3a k2 3a-k2
有更优雅的方法可以使用 dplyr 等来做到这一点。
d1 = c("2a", "3a")
d2 = c("k1", "k2")
现在,我需要在一个新向量中创建一个列,比如 'vec',如下所示:
vec = c("2a-k1", "2a-k2", "3a-k1", "3a-k2")
基本上我只需要一个包含两列的每个组合的列。 合并选项没有帮助。任何意见是极大的赞赏。
我假设您的 vec
中有错字,因为您说“每个组合都来自两列”。如果是这样,那么这应该有效
x <- expand.grid(d1, d2, stringsAsFactors = FALSE)
x$d3 <- paste(x[,"Var1"], x[,"Var2"], sep = "-")
> x
Var1 Var2 d3
1 2a k1 2a-k1
2 3a k1 3a-k1
3 2a k2 2a-k2
4 3a k2 3a-k2
有更优雅的方法可以使用 dplyr 等来做到这一点。