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

在R语言中将数据框列值拆分至单独列的实现方法

数据框按变量值拆分多列的解决方案

方法一:使用tidyverse工具包(推荐)

借助dplyr和tidyr的组合可以快速实现需求,核心用pivot_wider函数完成列的转换:

# 加载tidyverse(如果未安装先运行 install.packages("tidyverse"))
library(tidyverse)

# 原始数据
df <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7),
                 var1 = c('a', 'a', 'b', 'b', 'b','c','d'))

# 转换为目标格式
result_df <- df %>%
  pivot_wider(
    names_from = var1,  # 用var1的取值作为新列名
    values_from = var1, # 用var1的对应值填充新列
    values_fill = NA    # 无匹配值时填充NA
  )

print(result_df)

运行后输出:

# A tibble: 7 × 5
     ID a     b     c     d    
  <dbl> <chr> <chr> <chr> <chr>
1     1 a     NA    NA    NA   
2     2 a     NA    NA    NA   
3     3 NA    b     NA    NA   
4     4 NA    b     NA    NA   
5     5 NA    b     NA    NA   
6     6 NA    NA    c     NA   
7     7 NA    NA    NA    d

方法二:Base R原生实现

如果不想加载额外包,可以用原生循环和条件判断实现:

# 原始数据
df <- data.frame(ID = c(1, 2, 3, 4, 5, 6, 7),
                 var1 = c('a', 'a', 'b', 'b', 'b','c','d'))

# 获取var1的唯一取值
unique_values <- unique(df$var1)

# 为每个唯一值创建对应列
for(val in unique_values) {
  df[[val]] <- ifelse(df$var1 == val, val, NA)
}

# 移除原始var1列(可选操作)
df <- df[, setdiff(names(df), "var1")]

print(df)

运行后输出:

ID    a    b    c    d
1  1    a <NA> <NA> <NA>
2  2    a <NA> <NA> <NA>
3  3 <NA>    b <NA> <NA>
4  4 <NA>    b <NA> <NA>
5  5 <NA>    b <NA> <NA>
6  6 <NA> <NA>    c <NA>
7  7 <NA> <NA> <NA>    d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:55:30