在 R 中的单个列中生成一个元素与所有其他元素的所有组合
Produce all combinations of one element with all other elements within a single column in R
假设我有一个数据框,其单列包含字母 a、b、c、d、e。
a
b
c
d
e
在 R 中,是否可以提取单个字母,例如 'a',并生成 'a' 和其他字母之间所有可能的配对组合(没有重复)?在这种情况下可以使用 combn
命令吗?
a b
a c
a d
a e
我们可以使用data.frame
data.frame(col1 = 'a', col2 = setdiff(df1$V1, "a"))
-输出
col1 col2
1 a b
2 a c
3 a d
4 a e
数据
df1 <- structure(list(V1 = c("a", "b", "c", "d", "e")),
class = "data.frame", row.names = c(NA,
-5L))
更新:
使用 .before=1
参数,代码更短:-)
df %>%
mutate(col_a = first(col1), .before=1) %>%
slice(-1)
使用 dplyr
您可以:
library(dplyr)
df %>%
mutate(col2 = first(col1)) %>%
slice(-1) %>%
select(col2, col1)
输出:
col2 col1
<chr> <chr>
1 a b
2 a c
3 a d
4 a e
你可以使用
expand.grid(x=df[1,], y=df[2:5,])
哪个returns
x y
1 a b
2 a c
3 a d
4 a e
假设我有一个数据框,其单列包含字母 a、b、c、d、e。
a
b
c
d
e
在 R 中,是否可以提取单个字母,例如 'a',并生成 'a' 和其他字母之间所有可能的配对组合(没有重复)?在这种情况下可以使用 combn
命令吗?
a b
a c
a d
a e
我们可以使用data.frame
data.frame(col1 = 'a', col2 = setdiff(df1$V1, "a"))
-输出
col1 col2
1 a b
2 a c
3 a d
4 a e
数据
df1 <- structure(list(V1 = c("a", "b", "c", "d", "e")),
class = "data.frame", row.names = c(NA,
-5L))
更新:
使用 .before=1
参数,代码更短:-)
df %>%
mutate(col_a = first(col1), .before=1) %>%
slice(-1)
使用 dplyr
您可以:
library(dplyr)
df %>%
mutate(col2 = first(col1)) %>%
slice(-1) %>%
select(col2, col1)
输出:
col2 col1
<chr> <chr>
1 a b
2 a c
3 a d
4 a e
你可以使用
expand.grid(x=df[1,], y=df[2:5,])
哪个returns
x y
1 a b
2 a c
3 a d
4 a e