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

R语言实现按交付年份移位行数据及故障占比计算

R语言实现方案

1. 故障年份移位功能实现

优先推荐tidyverse生态的实现方案,逻辑清晰易维护:

# 加载依赖包
library(dplyr)
library(tidyr)
library(stringr)

# 测试数据
data <- data.frame(
  `Delivery Year` = c('1976','1977','1978','1979'),
  `Freq` = c(120,100,80,60),
  `Year.1976` = c(10,NA,NA,NA),
  `Year.1977` = c(5,3,NA,NA),
  `Year.1978` = c(10,NA,8,NA),
  `Year.1979` = c(13,10,5,14),
  check.names = FALSE
)

# 移位处理代码
result <- data %>%
  # 故障年份列转为长格式
  pivot_longer(cols = starts_with("Year."), names_to = "natural_year", values_to = "fault_count") %>%
  # 提取年份数值、计算交付后第几年
  mutate(natural_year_num = as.integer(str_extract(natural_year, "\\d+")),
         delivery_year_num = as.integer(`Delivery Year`),
         year_offset = natural_year_num - delivery_year_num + 1) %>%
  # 过滤交付前的无效年份数据
  filter(year_offset >= 1) %>%
  # 转回宽格式,按交付后第几年命名列
  pivot_wider(id_cols = c(`Delivery Year`, Freq), 
              names_from = year_offset, 
              values_from = fault_count,
              names_prefix = "Year.") %>%
  arrange(`Delivery Year`)

如果需要无依赖的基础R实现,可使用逐行apply方案:

# 提取故障列和对应年份
year_cols <- grep("^Year\\.", colnames(data), value = TRUE)
year_nums <- as.integer(sub("Year\\.", "", year_cols))

# 逐行移位
shifted_rows <- t(apply(data, 1, function(row) {
  delivery_year <- as.integer(row[1])
  start_idx <- which(year_nums == delivery_year)
  shift_vals <- row[year_cols][start_idx:length(year_cols)]
  c(shift_vals, rep(NA, length(year_cols) - length(shift_vals)))
}))

# 拼接输出结果
result <- cbind(data[, c("Delivery Year", "Freq")], shifted_rows)
colnames(result) <- c("Delivery Year", "Freq", paste0("Year.", 1:length(year_cols)))

2. 故障占比百分比转换

在移位后的结果基础上,直接对年份列批量计算占比即可:

# 同时保留原始计数和百分比
result_with_pct <- result %>%
  mutate(across(starts_with("Year."), ~ round(.x / Freq * 100, 2), .names = "{col}_pct"))

# 直接替换原始计数为百分比
result_pct_only <- result %>%
  mutate(across(starts_with("Year."), ~ round(.x / Freq * 100, 2)))

可根据需要调整round函数的参数修改小数保留位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:05