【R语言】年龄性别频数匹配 挑选样本 病例对照研究,对年龄性别进行频数匹配

病例对照研究,对年龄性别进行频数匹配

示例数据

示例数据下载

IDgroupsexage
A1Control90
A10Control89
A100Control85
A1000Control74
A1001Case74
A1002Case74
A1003Case74
A1004Case74
A1005Control74
data <- read.csv("年龄性别频数匹配.csv")

## 可以先对年龄进行分层处理
data$agegroup <- cut(data$age,c(0,10,20,30,40,50,60,70,80,90,Inf),
                     right =FALSE # 选取区间开口[ ]情况
                     )
# 生成list数据,按每一个list[?]为同样sex和age
dataSplit <- split(data, list(data$sex, data$age))

# 单个list提取
A <- as.data.frame(data_case[[1]])
data1 <- A[A$group == "Case", ]
data2 <- A[A$group == "Control", ]
num <- as.numeric(table(A$group == "Case")[2])
set.seed(123) # 设置随机数目,多次重复保持一致
data3 <- data2[sample(1:NROW(data2), num, replace = FALSE), ]
assign(paste0("dataFinal", 1), rbind(data1, data3))

# 循环提取
for (i in 1:length(dataSplit)) {
  A <- as.data.frame(data_case[[i]])
    data1 <- A[A$group == "Case", ]
    data2 <- A[A$group == "Control", ]
    numCase <- nrow(data1)
    numControl <- nrow(data2)
    if (numCase > 0 & numControl>0 & numControl-numCase>=0) {
      na.omit <- TRUE
      set.seed(123) # 设置随机数目,多次重复保持一致 【可以沉默】
      data3 <- data2[sample(1:numControl, numCase, replace = FALSE), ]
      assign(paste0("dataFinal", i), rbind(data1, data3))
    }
    if (numCase > 0 & numControl>0 & numControl-numCase<0) {
      na.omit <- TRUE
      set.seed(123) # 设置随机数目,多次重复保持一致 【可以沉默】
      data3 <- data1[sample(1:numCase, numControl, replace = FALSE), ]
      assign(paste0("dataFinal", i), rbind(data2, data3))
    } 
}

# 多个数据框合并
multimerge<-function(dat=list(),...){
  if(length(dat)<2)return(as.data.frame(dat))
  mergedat<-dat[[1]]
  dat[[1]]<-NULL
  for(i in dat){
    mergedat<-merge(all=TRUE,mergedat,i,...)
  }
  return(mergedat)
}

files=ls(pattern = "dataFinal")
listALL=list()
# 数据框合成list
for (i in 1:length(ls(pattern = "dataFinal"))) {
  eval(parse(text = paste0("listALL","[[",i,"]]", " <- ",files[i])))
}

dataALL <- multimerge(listALL)
# 排序
dataALL=dplyr::arrange(dataALL,age,sex,group)
# 导出
write.csv(dataALL,"dataALL.csv",row.names = F)
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
进行数据集中性别频数的统计之前,需要先确定数据集中包含哪些变量,其中包括性别变量的名称和类型。 假设数据集中的性别变量为“gender”,则可以使用各种统计软件,如Excel、SPSS、R等来进行性别频数的统计。 在Excel中,可以使用“数据透视表”功能进行性别频数的统计。具体步骤如下: 1. 在Excel中打开数据集。 2. 选中数据集,点击“插入”选项卡,选择“数据透视表”。 3. 在弹出的“创建数据透视表”对话框中,将“gender”变量拖动到“行”区域。 4. 将“gender”变量再次拖动到“值”区域。 5. 在“值”区域中,将“gender”变量设置为“计数”方式。 6. 点击“确定”按钮,即可生成性别频数的数据透视表。 在SPSS中,可以使用“频数分析”功能进行性别频数的统计。具体步骤如下: 1. 在SPSS中打开数据集。 2. 点击“分析”选项卡,选择“描述统计”下的“频数”。 3. 将“gender”变量拖动到“变量”区域。 4. 点击“统计”按钮,在弹出的对话框中,勾选“计数”选项。 5. 点击“确定”按钮,即可生成性别频数的报告。 在R中,可以使用以下代码进行性别频数的统计: ``` # 读取数据集 data <- read.csv("data.csv") # 计算性别频数 table(data$gender) ``` 其中,“data.csv”为数据集文件名,“gender”为性别变量的名称。运行以上代码后,即可在控制台中输出性别频数的统计结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值