如何在R中生成两列所有组合的Tibble并填充缺失值?
生成tibble全组合并填充默认值的解决方案
原始数据
df1 <- tibble(V1 = c("a", "b", "c"), V2 = c("b", "b", "f"), v3 = c(1:3))
问题分析
你需要生成V1和V2所有可能的两两组合(包含所有在V1、V2中出现过的唯一值:a,b,c,f),并将不存在的组合对应的v3填充为0。之前的代码未成功,是因为complete(V1, V2)默认只使用数据框中各自列的现有唯一值生成组合(即V1用a,b,c,V2用b,f),无法覆盖f作为V1、a,c作为V2等情况。
解决代码
library(tidyverse) # 获取所有在V1/V2中出现过的唯一值 all_values <- union(df1$V1, df1$V2) # 基于全量值生成组合并填充 df1 %>% complete(V1 = all_values, V2 = all_values, fill = list(v3 = 0))
这段代码会先提取V1和V2的所有唯一值并去重,再用这个全量集合扩展V1和V2的所有组合,最终生成16行的tibble,完全匹配你需要的输出。
内容的提问来源于stack exchange,提问作者Wilson Souza
相关产品推荐
相关产品推荐

