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

R语言如何将单列类别重排为多列,统计每个物种对应类别存在情况

R实现物种类别覆盖统计的方法

方法1:tidyverse套件实现(代码简洁易读)

先加载依赖包,再做数据转换:

# 加载tidyverse(含dplyr、tidyr)
library(tidyverse)

# 构造你的原始数据表(如果已经有数据可跳过这步)
df <- tibble(
  A = c("a", "a", "a", "a2", "a3"),
  B = c("b'", "b'", "b''", "b1", "b2"),
  C = c(1, 2, 3, 1, 3)
)

# 转换为目标格式
res <- df %>%
  mutate(val = "+") %>%
  pivot_wider(
    id_cols = c(A, B),
    names_from = C,
    names_prefix = "C",
    values_from = val,
    values_fill = "-"
  )

执行后打印res即可得到你需要的结果。

方法2:基础R实现(无需安装第三方包)

# 构造原始数据表(已有数据可跳过)
df <- data.frame(
  A = c("a", "a", "a", "a2", "a3"),
  B = c("b'", "b'", "b''", "b1", "b2"),
  C = c(1, 2, 3, 1, 3),
  stringsAsFactors = FALSE
)

# 生成交叉表并替换为+-标记
ct <- table(df$B, df$C)
ct[ct > 0] <- "+"
ct[ct == 0] <- "-"

# 匹配属名列合并结果
ab_map <- unique(df[, c("A", "B")])
res <- cbind(ab_map, ct[match(ab_map$B, rownames(ct)), ])
colnames(res) <- c("A", "B", paste0("C", colnames(res)[-c(1,2)]))

两种方法都会自动适配C列的所有类别,不需要手动指定类别范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:36:03