R语言 在变量内跨组合并

umuewwlo  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(137)

我需要在一个 Dataframe 中创建所有组的组合。
假设我从以下内容开始:

df <- tibble(
 j = c("x", "x", "y", "y", "z", "z"),
 k = c(100, 300, 20, 60, 40, 35),
 ind = c(0 ,0, 0, 0, 1, 1)
)

我需要的是这样的东西:

want <- tibble(
 j_k = c("100_20","100_60","300_20","300_60")
)

我已经回顾了类似的问题,指向像expand()和combn()这样的东西。问题是大多数帖子都是关于创建跨变量的所有组合,而我需要变量中跨组的组合,并根据指示符(在我的示例中为ind)选择拒绝,并控制组合值之间的分隔符。
可以更改数据形状以使其更容易。
谢谢你的帮助

t8e9dugd

t8e9dugd1#

在基础R中有expand.gridsplit

df_new <- with(df[df$ind == 0, ], expand.grid(split(k, j)))
do.call(paste, c(df_new, sep = "_"))
#[1] "100_20" "300_20" "100_60" "300_60"

相关问题