

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


data去重排序是我的数据框,行名为肿瘤代码C00、C01、C02,如何用代码循环读取不同行的数据(就是修改行名C01、C02一直到C96等等)进行下面一系列计算操作?求指教~
码不易,你试试
# 载入需要的包
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