一起来学 R编程吧(1)--R语言中%in%函数的用法

本文介绍了R语言中的%in%函数,用于判断向量元素是否存在于另一向量中,并展示了如何通过该函数进行数据提取和清洗。通过实例,解释了如何利用%in%配合ifelse和which函数进行条件筛选,以及在实际数据分析中的应用,例如在矿工数据集中创建肺癌标志变量。
摘要由CSDN通过智能技术生成

R语言由一个个基础函数组成,熟练灵活应用这些基础函数,有助于我们更好的学习R包及编程,这个专栏可能很多人不感兴趣,但是对提升自己很有帮助,感兴趣的朋友一起来学习。今天我们来介绍一下%in%函数的用法,这个函数在我们数据提取、清洗及编程中用处很大,今天我们一起来学习一下。
在这里插入图片描述
%in%函数的用法就是判断函数左边的向量是否在函数右边中,然后返回一个布尔值(就是正确或者错误)。我们由浅入深来体会这个函数的应用。先建立两个向量a和b.

a<-1:10
b<-c(1,3,5,9)

在这里插入图片描述

a %in% b

如图所示a和b一样放入时候为TURE,不然为FALSE
在这里插入图片描述
我们可以通过取子集的方式把TURE的值取出来,就是a里面有b

a[a %in% b]

在这里插入图片描述
假设我们不需要TURE的值,需要FALSE这部分, 就是a里面没有b

a[!(a %in% b)]

在这里插入图片描述
结合ifelse函数来使用

ifelse(a %in% 1, 1, 0) #若a的值包含在1里面,输出1,否者输出0

在这里插入图片描述

ifelse(a %in% 1, 'yes', 'no') #若a的值包含在1里面,输出yes,否者输出no

在这里插入图片描述
结合which函数来使用

which(a %in% 1) #输出x包含在1中值的位置

在这里插入图片描述

ifelse(a %in% b, which(a==b), 0 ) ##若a的值包含在b里面,输出a==b的位置,否者输出0

在这里插入图片描述
下面我们使用一个实例数据来演示
先导入我们的数据

bc<-read.csv("E:/r/test/kuanggong.csv",sep=',',header=TRUE)

在这里插入图片描述
这是一个矿工的数据(公众号回复:矿工数据,可以获得数据),主要是研究镍冶炼工人,包括接触、随访期和死亡原因的信息。一共有12个变量。Agr年龄段,这里5岁为一个年龄段。Ygr出生年份周期,也是5年为一段,icd死亡诊断的icd编码,exposure为暴露指数,agein随访开始时的年龄,ageout随访结束时的年龄,lung每百万人年肺癌死亡率。
假设我们想了解镍冶炼工人的肺癌死亡率,icd编码中162,163为肺癌诊断,我们先生成一个肺癌的指标

bb<-within(bc,lung.cancer<-as.numeric(icd %in% c(162,163)))####添加肺癌这个变量,对应的icd为162和163

使用ifelse语句也是一样的

bb$lung.cancer1<-ifelse(bc$icd %in% c(162,163), 1, 0)

在这里插入图片描述
这样我们就把icd中162和163的变量设置为肺癌中的1,不是的设置为0,我们这里把1当做数字来计数,我们可以通过tapply函数来创建年龄与肺癌发生率的风险表

pyr<-tapply(lung.cancer,list(ygr,agr),sum)#汇总风险次数

在这里插入图片描述
癌症病例计数

count<-tapply(lung.cancer,list(ygr,agr),sum)

在这里插入图片描述
最后可以算出千人年发病率

fbl<-count/pyr*1000

在这里插入图片描述
更多精彩文章请关注公众号:零基础说科研
在这里插入图片描述

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值