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

R语言基于降雨二分类条件统计车辆使用组合频次表的实现方法

统计不同降雨场景下车辆使用组合频次的实现方法

你之前使用的xtabs( ~Rain + car.1 + car.2 + car.3 + car.4 ,data = df)会生成5维交叉列联表,需要逐层嵌套查看结果,不符合直接输出组合+频次的需求。我们可以先为每行数据生成对应的车辆使用组合标签,再按降雨分组统计,以下是两种实现方案:


方案1:tidyverse实现(灵活易扩展)

library(tidyverse)

# 注意:示例数据中第二辆车列名为cars.2,若实际数据为car.2可自行调整列名列表
result <- df %>%
  rowwise() %>%
  mutate(
    # 提取当前行使用的车辆列名
    used_cars = list(c("car.1","cars.2","car.3","car.4")[c(car.1, cars.2, car.3, car.4) == 1]),
    # 拼接成组合名称,无车辆使用的行单独标记
    car_combination = ifelse(length(used_cars) == 0, "无车辆使用", paste(used_cars, collapse = "+"))
  ) %>%
  ungroup() %>%
  # 按降雨情况和车辆组合分组统计频次
  count(Rain, car_combination, name = "freq") %>%
  # 转成宽表,列对应降雨/无降雨,缺失频次填充0
  pivot_wider(names_from = Rain, values_from = freq, values_fill = 0)

# 如果不需要统计无车辆使用的记录,可在count前加一行 filter(length(used_cars) > 0)

方案2:基础R实现(无需额外安装包)

# 提取所有车辆列,注意第二列列名为cars.2
car_cols <- df[, c("car.1","cars.2","car.3","car.4")]

# 逐行生成车辆组合标签
car_combinations <- apply(car_cols, 1, function(x) {
  used <- colnames(car_cols)[x == 1]
  if(length(used) == 0) return("无车辆使用")
  return(paste(used, collapse = "+"))
})

# 生成交叉统计表格
result <- table(car_combinations, df$Rain)

输出说明

最终结果的行是所有出现过的车辆使用组合(包含单车辆、多车辆组合,可选排除无车辆使用的情况),列分别对应rain和no rain场景,单元格值为对应组合在该场景下的出现频次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 22:30:00