R语言如何将数据框按001:020序列扩展为正方形数据框
实现方法
你需要先将宽格式数据转为长格式,再用complete补全所有行和列的组合,最后转回宽格式即可。如果需要保留001~020的三位字符格式行/列名,使用以下代码:
library(tidyverse) # 生成001到020格式的目标行/列名序列 target_dim <- sprintf("%03d", 1:20) # 处理数据 full_df <- data %>% rownames_to_column("row_id") %>% pivot_longer(-row_id, names_to = "col_id", values_to = "val") %>% complete(row_id = target_dim, col_id = target_dim, fill = list(val = NA)) %>% pivot_wider(names_from = col_id, values_from = val) %>% column_to_rownames("row_id")
如果需要行名、列名为纯数字1到20的格式,调整代码如下:
full_df <- data %>% rownames_to_column("row_id") %>% mutate(row_id = as.integer(row_id)) %>% pivot_longer(-row_id, names_to = "col_id", values_to = "val", names_transform = list(col_id = as.integer)) %>% complete(row_id = 1:20, col_id = 1:20, fill = list(val = NA)) %>% pivot_wider(names_from = col_id, values_from = val) %>% column_to_rownames("row_id")
结果验证
执行dim(full_df)会返回[1] 20 20,空缺位置自动填充为NA,符合需求。
内容的提问来源于stack exchange,提问作者user113156
相关产品推荐
相关产品推荐

