R语言数据框格式转换:请求实现指定结构的代码及依赖包
R语言实现数据框结构转换
所需依赖包
需要安装并加载tidyverse包(整合了dplyr数据操作工具和tidyr数据框变形工具)。
实现代码
# 首次使用时安装依赖包 install.packages("tidyverse") # 加载包 library(tidyverse) # 原数据框 df <- data.frame(ID = c(1, 2, 3), A = c(10, 20, 30), B = c(0, 0, 1)) # 1. 生成row列(将ID转换为X1/X2/X3格式) df <- df %>% mutate(row = paste0("X", ID)) # 2. 生成每个row对应的_cen列(以原B列的值为_cen值,非对应行填充0) cen_data <- df %>% select(row, B) %>% pivot_wider( names_from = row, values_from = B, names_glue = "{row}_cen" ) %>% mutate(across(everything(), ~replace_na(.x, 0))) # 3. 合并数据并调整列顺序,得到目标结构 result <- df %>% select(row, A, B) %>% bind_cols(cen_data) %>% select(row, A, X1_cen, B, X2_cen, X3_cen) # 查看最终结果 print(result)
运行结果
row A X1_cen B X2_cen X3_cen 1 X1 10 0 0 0 0 2 X2 20 0 0 0 0 3 X3 30 0 1 0 1
自定义说明
- 若
_cen列需要使用其他数值(而非原B列的值),只需修改cen_data部分的select(row, B)为对应列,或直接替换为自定义数值; - 如需扩展更多变量(如C、D等),在
select(row, A, B)中添加对应变量,并调整最终select的列顺序即可。
内容的提问来源于stack exchange,提问作者Boris
相关产品推荐
相关产品推荐

