lovage939 2023-08-06 17:12 采纳率: 100%
浏览 28
已结题

R语言 循环读取数据框不同行的数据并执行相同计算操作?

img

img

data去重排序是我的数据框,行名为肿瘤代码C00、C01、C02,如何用代码循环读取不同行的数据(就是修改行名C01、C02一直到C96等等)进行下面一系列计算操作?求指教~

  • 写回答

7条回答 默认 最新

  • 技术宅program 2023-08-07 15:32
    关注

    码不易,你试试

    # 载入需要的包
    library(tidyverse)
    library(epitools)
    
    # 读取16年人口数据
    population16 <- read_excel('16年人口.xlsx') 
    
    # 处理人口数据,保留需要的列,去重排序
    population <- population16 %>% 
      select(c(3:21)) %>%
      distinct() %>%
      arrange(desc(合计))
    
    # 2010年中国标准人口构成  
    standard_pop <- c(第六次人口普查人口数据) 
    
    # 创建一个自定义函数
    calculate_rate <- function(case_data, population, standard_pop) {
      # 构造分析用数据框
      df <- tibble(
        # 数据你自己补充完整
        age_group = c("0-4","5-9","10-14",......),
        case = case_data,
        pop = population$合计
      )
      
      # 计算各年龄段的粗发病率 
      df <- df %>% mutate(crudeRate = case/pop)
      
      # 计算标准化发病率
      df <- df %>%
        mutate(
          proportion = prop.table(standard_pop),
          adjustRate = crudeRate * proportion
        )
      
      # 计算总的粗发病率(10万分之一)
      crude_rate_total <- (sum(df$case) / sum(df$pop)) * 100000
      
      # 返回计算结果
      return(crude_rate_total)
    }
    
    # 转置数据框
    data_t <- t(data)
    
    # 获取数据框的列名
    codes <- colnames(data_t)
    
    # 创建一个空向量来保存结果
    results <- vector("double", length(codes))
    
    # 创建一个循环
    for (i in seq_along(codes)) {
      # 提取对应的列名和列数据
      code <- codes[i]
      case_data <- data_t[ , code]
      # 调用自定义函数进行计算
      results[i] <- calculate_rate(case_data, population, standard_pop)
    }
    
    # 查看结果
    results
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 8月16日
  • 已采纳回答 8月8日
  • 创建了问题 8月6日