代码+视频,总结R语言常用的几种按条件转换数据的方法

在科学研究中免不了和数据打交道,收集到原始数据后我们经常需要对其进行清洗、转换才能得到我们需要的数据。

在这里插入图片描述
今天我总结了一下自己常用的一些多条件的数据转换方法,在临床中遇到问题能多一种选择,下面视频操作演示一下

总结R语言常用的几种按条件转换数据的方法

代码:

library(survival)
library(foreign)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",use.value.labels=F, to.data.frame=T)
# 这是个乳腺癌患者的生存数据,age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,
# histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,
# pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,
# time是生存时间,后面的agec是我们自己设定的,不用管它。#分类变量转成因子
bc$histgrad<-as.factor(bc$histgrad)
bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)
names(bc)
bc <- na.omit(bc)# 假设我们想把年龄这个指标分成4个等分,然后比较不同年龄组的组间趋势P for trend,就是年龄分组对死亡率的影响。
# 按照上一篇文章《手把手教你R语言计算校正混杂因素后的P for trend》的方法之一,要算出每组年龄段患者的中位数值。
# 我们先按年龄通过百分比0-25%,25%-50%,50%-70%,70%-100%这个比较把年龄分为4个区间age3<-quantile(bc$age,c(0,.25,.50,.75,1))
age2<-cut(bc$age,breaks=c(age3),include.lowest=T,labels = c(0,1,2,3))#把age划分为4个等分到区间
bc$age2<-age2# 我们已经生成了年龄分段组(上图age2),我们接下来进行今天的主要内容:分别计算出每个分段的age2的中位数值,啥意思的呢?
# 就是age2等于0的这一组age(年龄)的中位数,然后age2等于1的这一组age(年龄)的中位数,如此类推。这就涉及到了变量的按条件转换。#1.subset函数
subset(bc$age,bc$age2==0)median(subset(bc$age,bc$age2==0))
median(subset(bc$age,bc$age2==0))
median(subset(bc$age,bc$age2==1))
median(subset(bc$age,bc$age2==2))
median(subset(bc$age,bc$age2==3))#2. which函数
which(bc$age2==0)bc[,"age"][which(bc[,"age2"]==0)]
median(bc[,"age"][which(bc[,"age2"]==0)])#3. with函数与by函数结合
newcode<-with(bc,by(age,age2,median))#4. tapply函数attach(bc)
tapply(age,age2, median)#5. dplyr包的分组摘要函数(group_by和summarize函数)
library(dplyr)
by_age<-group_by(bc,age2)
summarize(by_age,mid=median(age))  bc %>% group_by(age2)%>% summarize(mid=median(age))#6. select函数
select(filter(bc,age2 == 0),age)$age
median(select(filter(bc,age2 == 0),age)$age)#7.自己写个funtion#可以加深对函数的理解datamedian<-function(data,x,group){attach(data)m<-levels(group)n<-length(m)newcode<-median(subset(x,group==m[1]))if (n>2){for (i in 2:n){newcode1<-median(subset(x,group==levels(group)[i]))newcode<-append(newcode,newcode1)}}return(newcode)
} datamedian(data = bc,x=age,group=age2) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习 --- stanford cs231 编程作业(如何在chrome中安装Google colab)

stanford cs231 编程作业(如何开始你的colab编程&#xff09; 斯坦福231n的所有作业都要求在colab里面做&#xff0c;colab可以为你提供免费的云计算。实际上在他的官网中也有关于如何安装colab的详细说明视频。 https://youtu.be/DsGd2e9JNH4https://youtu.be/DsGd2e9JNH4 我这…

springboot集成mybatis 单元测试

1、依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

MATLAB 相移法计算绝对相位

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 继续之前博客的内容(Matlab 结构光相移法(单频多相)),通过相移算法计算出的相位主值必 ϕ ( x , y ) \phi(x,y)

Unity入门理论+实践篇之Luna

创建世界的主角 父子物体 首先创建一个cube物体 可以观察到其在2D视角下的坐标为&#xff08;0&#xff0c;0&#xff09; 此时将cube物体拖拽到ldle_0下&#xff0c;如图所示&#xff0c;并将其坐标值改为&#xff08;2&#xff0c;2&#xff09; 此时再将ldle_0物体的坐标…

95.网络游戏逆向分析与漏洞攻防-ui界面的设计-ui的设计与架构

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

基于jeecgboot-vue3的Flowable新建流程定义(二)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 接上一节 4、编辑好后进行保存&#xff0c;保存代码如下&#xff1a; /*保存流程定义*/const save (data: any) > {//console.log("save data", data); // { process: {..…

python从入门到精通05

一、输入身份证号码输出对应省份 id_number "4313212002" province_code id_number[0] id_number[1] province_code_list {43:"湖南"} print("身份证号对应省份是&#xff1a;",province_code_list[province_code]) 二、统计需要取快递人员…

博客增长与数据分析:不可不知的 6 大策略

CSDN 的朋友你们好&#xff0c;我是何未来&#xff0c;一个热爱编程和写作的计算机本科生&#xff0c;今天给大家带来专栏【程序员博主教程&#xff08;完全指南&#xff09;】的第 11 篇文章“分析和追踪博客表现”。本篇文章为你揭示了如何通过数据洞察来优化你的技术博客&am…

-bash: locate: 未找到命令(解决办法)

-bash: locate: 未找到命令的解决办法 一、解决办法二、什么是locate三 、locate命令的具体用法 一、解决办法 CentOS7默认没有安装locate命令&#xff0c;安装方式如下&#xff1a; 执行以下命令进行安装&#xff1a; yum install mlocate用 updatedb 指令创建 或更新locate …

数学建模--LaTeX基本介绍和入门

1.引言 &#xff08;1&#xff09;上次我们介绍到了我们这个团队第一次参加这个数学建模比赛&#xff0c;就是这个电工杯&#xff0c;我是一名论文手&#xff0c;我们在这个下午也是对于这个比赛过程中出现的问题做了相应的分析&#xff0c;每个人也是进行了反思&#xff0c;知…

Tomcat源码解析(七):底层如何获取请求url、请求头、json数据?

Tomcat源码系列文章 Tomcat源码解析(一)&#xff1a;Tomcat整体架构 Tomcat源码解析(二)&#xff1a;Bootstrap和Catalina Tomcat源码解析(三)&#xff1a;LifeCycle生命周期管理 Tomcat源码解析(四)&#xff1a;StandardServer和StandardService Tomcat源码解析(五)&…

golang实现mediasoup的tcp服务及channel通道

tcp模块 定义相关类 Client&#xff1a;表示客户端连接&#xff0c;包含网络连接conn、指向服务器的指针Server和Channel指针c。server&#xff1a;表示TCP服务器&#xff0c;包含服务器地址address、TLS配置config以及三个回调函数&#xff1a; onNewClientCallback&#xf…

最大连续1的个数(滑动窗口)

算法原理&#xff1a; 这道题大眼一看是关于翻转多少个0的问题&#xff0c;但是&#xff0c;如果你按照这种思维去做题&#xff0c;肯定不容易。所以我们要换一种思维去做&#xff0c;这种思维不是一下就能想到的&#xff0c;所以想不到也情有可原。 题目是&#xff1a;给定一…

Vue3:动态路由+子页面(新增、详情页)动态路由配置(代码全注释)

文章目录 实现思路调用后端接口获取用户权限获取页面权限动态绑定到路由对象中动态添加子页面路由 实现思路 emm&#xff0c;项目中使用动态路由实现根据后端返回的用户详情信息&#xff0c;动态将该用户能够访问的页面信息&#xff0c;动态生成并且绑定到路由对象中。但是后…

如何从清空的回收站中恢复已删除的Excel文件?

“嗨&#xff0c;几天前我删除了很多没有备份的Excel文件。回收站已清空。当我意识到我犯了一个大错误时&#xff0c;所有的Excel文件都消失了&#xff0c;回收站里什么都没有。清空回收站后是否可以恢复已删除的 Excel 文件&#xff1f; 回收站是一种工具&#xff0c;可让您在…

LeetCode 343. 整数拆分 (dp动态规划)

343. 整数拆分 力扣题目链接(opens new window) 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: 10输出: 36解释: 10 3 …

【openlayers系统学习】4.2Mapbox 样式渲染图层

二、Mapbox 样式渲染图层 显然我们目前的地图需要一些样式。 VectorTile​ 图层的样式与 Vector​ 图层的样式工作方式完全相同。那里描述的样式在这里也适用。 对于这样的地图&#xff0c;创建数据驱动的样式&#xff08;对矢量图层操作&#xff09;非常简单。但矢量切片也用…

单兵组网设备+指挥中心:集群系统技术详解

一、单兵设备功能特点 单兵组网设备是现代通信技术的重要成果&#xff0c;旨在为单个作战或工作单元提供高效的通信和数据传输能力。其主要功能特点包括&#xff1a; 1. 便携性&#xff1a;设备轻巧&#xff0c;便于单兵携带和使用&#xff0c;适应各种复杂环境。 2. 通信能…

简述vue-router 组件复用导致路由参数失效怎么办

当使用Vue Router时&#xff0c;组件复用可能会导致路由参数失效的问题。为了解决这个问题&#xff0c;我们可以采取以下策略&#xff1a; 1. 监听路由变化 在Vue组件中&#xff0c;我们可以使用watch属性来监听$route对象的变化。当路由发生变化时&#xff0c;如果目标组件是…

第 8 章 机器人实体导航实现_路径规划(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 9.3.5 导航实现05_路径规划 路径规划仍然使用 navigation 功能包集中的 move_base 功能包。 5.1编写launch文…