You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:如何将分类数据表从Table A转换为Table B格式?

解决方案

可以用tidyverse工具包中的dplyr和tidyr函数完成这个转换,步骤如下:

1. 准备示例数据

先把模拟数据转换成R的数据框:

library(tidyverse)

# 构造Table A的数据框
table_a <- tibble(
  CAT = c("home", "holiday", "holiday", "home"),
  Type = c("house", "caravan", "hotel", "bungalow")
)

2. 转换为目标格式

核心是先给每个CAT分组添加行号,再将数据从长格式转成宽格式:

table_b <- table_a %>%
  # 按CAT分组,给每组内的行编序号
  group_by(CAT) %>%
  mutate(row_id = row_number()) %>%
  ungroup() %>%
  # 转成宽格式,CAT的取值作为列名,Type作为对应值,按row_id对齐行
  pivot_wider(names_from = CAT, values_from = Type) %>%
  # 调整列名首字母大写,匹配目标格式
  rename(Home = home, Holiday = holiday) %>%
  # 移除辅助的row_id列
  select(-row_id)

运行后得到的table_b就是目标格式:

# A tibble: 2 × 2
  Home    Holiday
  <chr>   <chr>  
1 house   caravan
2 bungalow hotel  

关键说明

  • group_by(CAT) %>% mutate(row_id = row_number()):给每个类别(home/holiday)下的条目分配行号,确保转宽格式时能正确对齐同一行的内容
  • pivot_wider:tidyr中用于长转宽的函数,names_from指定要转成列名的列,values_from指定对应列的值
  • rename用于调整列名大小写,让结果和Table B完全匹配

内容的提问来源于stack exchange,提问作者Louise Stevens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:25:01