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

R语言合并不同行数table至data.frame报错问题求助

解决电影工作人员数量统计合并报错问题

问题核心:单独统计导演、编剧数量时,table()仅保留存在对应角色的电影ID,导致两个结果的ID集合不一致,直接合并会因行数不匹配报错。

方案一:基础R原生实现

先将两个统计结果转为带明确列名的data.frame,通过全连接保留所有电影ID,最后把缺失值补为0:

# 转换导演统计结果并命名列
dir_df <- as.data.frame(table(imdb.players[imdb.players$role == "Director",]$id))
colnames(dir_df) <- c("movie_id", "num_directors")

# 转换编剧统计结果并命名列
writer_df <- as.data.frame(table(imdb.players[imdb.players$role == "Writer",]$id))
colnames(writer_df) <- c("movie_id", "num_writers")

# 全连接两个数据集,保留所有电影ID
numall.df <- merge(dir_df, writer_df, by = "movie_id", all = TRUE)

# 将缺失值替换为0(代表该电影无对应角色的工作人员)
numall.df[is.na(numall.df)] <- 0

方案二:dplyr+tidyr简化实现

用tidyverse工具链直接从原始数据分组统计,一步生成完整结果,自动补全缺失值:

library(dplyr)
library(tidyr)

numall.df <- imdb.players %>%
  filter(role %in% c("Director", "Writer")) %>%
  group_by(id, role) %>%
  summarise(count = n(), .groups = "drop") %>%
  pivot_wider(
    names_from = role, 
    values_from = count, 
    values_fill = 0  # 缺失的角色数量自动补0
  ) %>%
  rename(movie_id = id, num_directors = Director, num_writers = Writer)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:16:02