R语言列操作函数

目录

一.dplyr包

1.新增变量和变量重新赋值

2.筛选行

3.筛选列

4.分组计算

5.管道操作符

6.连接数据框

二.tidyr

1.列的分裂

2.列的合并

3.宽数据转长数据

4.长数据转宽数据


一.dplyr包

1.新增变量和变量重新赋值

> head(ToothGrowth)len supp dose
1  4.2   VC  0.5
2 11.5   VC  0.5
3  7.3   VC  0.5
4  5.8   VC  0.5
5  6.4   VC  0.5
6 10.0   VC  0.5
> ToothGrowth2<-mutate(ToothGrowth,len=len^2,nv=1:nrow(ToothGrowth),
nv2=ifelse(nv>median(nv),"H","L"))> head(ToothGrowth2)len supp dose nv nv2
1  17.64   VC  0.5  1   L
2 132.25   VC  0.5  2   L
3  53.29   VC  0.5  3   L
4  33.64   VC  0.5  4   L
5  40.96   VC  0.5  5   L
6 100.00   VC  0.5  6   L

2.筛选行

> ToothGrowth3<-filter(ToothGrowth2,nv %in% 1:50,nv2=="H")> head(ToothGrowth3)len supp dose nv nv2
1 231.04   OJ  0.5 31   H
2 462.25   OJ  0.5 32   H
3 309.76   OJ  0.5 33   H
4  94.09   OJ  0.5 34   H
5 210.25   OJ  0.5 35   H
6 100.00   OJ  0.5 36   H

3.筛选列

#只显示第二列和第四列的数据
ToothGrowth4 <- select(ToothGrowth3,c(2,4))

4.分组计算

> summarise(ToothGrowth,len_max=max(len))len_max
1    33.9
#会按照supp进行分组
> summarise(group_by(ToothGrowth,supp),len_max=max(len))
# A tibble: 2 × 2supp  len_max<fct>   <dbl>
1 OJ       30.9
2 VC       33.9
> summarise(group_by(ToothGrowth,dose),len_max=max(len))
# A tibble: 3 × 2dose len_max<dbl>   <dbl>
1   0.5    21.5
2   1      27.3
3   2      33.9
> summarise(group_by(ToothGrowth,dose,supp),len_max=max(len))
`summarise()` has grouped output by 'dose'. You can override using the `.groups`
argument.
# A tibble: 6 × 3
# Groups:   dose [3]dose supp  len_max<dbl> <fct>   <dbl>
1   0.5 OJ       21.5
2   0.5 VC       11.5
3   1   OJ       27.3
4   1   VC       22.5
5   2   OJ       30.9
6   2   VC       33.9

5.管道操作符

> library(magrittr)
#将左边的参数作为右边参数的第一个参数
> ToothGrowth %>%
+ mutate(nv=1:nrow(ToothGrowth))%>%
+ filter(nv %in% 1:50)%>%
+ select(1:2) %>%
+ group_by(supp)%>%
+ summarise(len_max=max(len))%>%
+ as.data.frame()

6.连接数据框

> df1<-data.frame(c1=2:5,c2=LETTERS[2:5])
> df1c1 c2
1  2  B
2  3  C
3  4  D
4  5  E
> df2<-data.frame(c3=LETTERS[c(2:3,20:23)],c4=sample(1:100,size=6))
> df2c3 c4
1  B 62
2  C 20
3  T 29
4  U 42
5  V 60
6  W 65
#left_join(df1,df2,by=c('c2'=='c3')):df1左连接于df2 
> df1 %>% left_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3  4  D NA
4  5  E NA
> df1 %>% right_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3 NA  T 29
4 NA  U 42
5 NA  V 60
6 NA  W 65
> df1 %>% full_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20
3  4  D NA
4  5  E NA
5 NA  T 29
6 NA  U 42
7 NA  V 60
8 NA  W 65
> df1 %>% inner_join(df2,by=c('c2'='c3'))c1 c2 c4
1  2  B 62
2  3  C 20

二.tidyr

1.列的分裂

> library(tidyr)
> df3<-data.frame(c5=paste(letters[1:3],1:3,sep="-"),
+ c6=paste(letters[1:3],1:3,sep="."),
+ c4=c("B","B","B"),
+ c3=c("H","M","L"))
> df3c5  c6 c4 c3
1 a-1 a.1  B  H
2 b-2 b.2  B  M
3 c-3 c.3  B  L
> df4<-df3%>%
+ separate(col=c5,sep="-",into=c("c7","c8"),remove=F)%>%
+ separate(col=c6,sep="\\.",into=c("c9","c10"),remove=T)
#\\表示转义字符
> df4c5 c7 c8 c9 c10 c4 c3
1 a-1  a  1  a   1  B  H
2 b-2  b  2  b   2  B  M
3 c-3  c  3  c   3  B  L

2.列的合并

> df4%>%
#remove表示将原来操作的列保留下来
+ unite(col="c11",c("c7","c8"),sep="_",remove=F)%>%
+ unite(col="c12",c("c9","c10"),sep=".",remove=T)c5 c11 c7 c8 c12 c4 c3
1 a-1 a_1  a  1 a.1  B  H
2 b-2 b_2  b  2 b.2  B  M
3 c-3 c_3  c  3 c.3  B  L

个人以为以下两个函数特别重要,特别有用,特别是在绘制线性图的时候

宽数据:列数变多了,names_from,表示列名的来源,value_from(),表示列值来源

从长数据到宽数据为from

长数据:行数变多了,names_to,表示列名加入到行中的去向,value_from(),表示列值加入到行中的去向,从宽数据到长数据为to

3.宽数据转长数据

> set.seed(42)
> df5<-data.frame(time=rep(2011:2013,each=3),
+ area=rep(letters[1:3],times=3),
+ pop=sample(100:1000,9),
+ den=round(rnorm(9,mean=3,sd=0.1),2),
+ mj=sample(8:12,9,replace = T))
#replace=T,有放回的取
> df5time area pop  den mj
1 2011    a 660 2.99 12
2 2011    b 420 3.15 12
3 2011    c 252 2.99 11
4 2012    a 173 3.20  9
5 2012    b 327 2.99 11
6 2012    c 245 3.13 10
7 2013    a 733 3.23  9
8 2013    b 148 2.86  8
9 2013    c 227 2.97  9> df6<-df5%>%
#将最后三列数据合并为一列
+ pivot_longer(cols=-c(1:2),
#列名称
+ names_to="varb",
#列值
+ values_to="value")
> df6
# A tibble: 27 × 4time area  varb   value<int> <chr> <chr>  <dbl>1  2011 a     pop   660   2  2011 a     den     2.993  2011 a     mj     12   4  2011 b     pop   420   5  2011 b     den     3.156  2011 b     mj     12   7  2011 c     pop   252   8  2011 c     den     2.999  2011 c     mj     11   
10  2012 a     pop   173   
# ℹ 17 more rows
# ℹ Use `print(n = ...)` to see more rows
> 

4.长数据转宽数据

> df6%>%
+ pivot_wider(names_from=c(area,varb),values_from = value)
# A tibble: 3 × 10time a_pop a_den  a_mj b_pop b_den  b_mj c_pop c_den  c_mj<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1  2011   660  2.99    12   420  3.15    12   252  2.99    11
2  2012   173  3.2      9   327  2.99    11   245  3.13    10
3  2013   733  3.23     9   148  2.86     8   227  2.97     9
> 

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

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

相关文章

如何高效的解析Json?

Json介绍 Json是一种数据格式&#xff0c;广泛应用在需要数据交互的场景Json由键值对组成每一个键值对的key是字符串类型每一个键值对的value是值类型(boo1值数字值字符串值)Array类型object类型Json灵活性他可以不断嵌套&#xff0c;数组的每个元素还可以是数组或者键值对键值…

HDFS 集群动态节点管理

目录 一、动态扩容、节点上线 1.1 背景 1.2 扩容步骤 1.2.1 新机器基础环境准备 1.2.2 Hadoop 配置 1.2.3 手动启动 DataNode 进程 1.2.4 Web 页面查看情况 1.2.5 DataNode 负载均衡服务 二、动态缩容、节点下线 2.1 背景 2.2 缩容步骤 2.2.1 添加退役节点 …

/etc/ssh/sshd_config 配置文件中的 PasswordAuthentication PermitRootLogin 参数作用

1、PasswordAuthentication PasswordAuthentications是一种身份验证方式&#xff0c;通常用于远程服务器的登录。当用户连接到远程服务器并进行身份验证时&#xff0c;服务器会根据 用户名进行验证&#xff0c;如果验证成功允许用户访问服务器。在SSH中&#xff0c;PasswordAut…

补种胡杨树-滑动窗体

标题&#xff1a;补种未成活胡杨 | 时间限制&#xff1a;1秒 | 内存限制&#xff1a;262144K 近些年来&#xff0c;我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨&#xff08;编号1-N&#xff09;&#xff0c;排成一排。一个月后&#xff0c;有M棵胡杨未能成活。 现可补种胡杨…

Dijkstra的算法实现 -- 基于优先级队列

什么是Dijkstra算法&#xff1f; Shortest Path Tree (SPT) 单源最短路径算法 从指定节点出发&#xff0c;到达任何其他节点的距离最短。 和K算法、P算法的区别是&#xff1f; K算法、P算法&#xff0c;这两个算法都是最小生成树算法 Minimal Spanning Tree&#xff08;MST&am…

centos7上hive3.1.3安装及配置

1、安装背景&#xff1b; hive是基于hadoop的数据仓库软件&#xff0c;部署运行在linux系统之上&#xff0c;安装之前必须保证hadoop环境运行正常&#xff0c;hive本身不是分布式软件&#xff0c;它的分布式主要是借助hadoop实现&#xff0c;存储是hdfs&#xff0c;计算是mapr…

笔记本家庭版本win11上win+r,运行cmd默认没有管理员权限,如何调整为有管理员权限的

华为matebookeGo 笔记本之前有段时间不知怎么回事&#xff0c;打开运行框&#xff0c;没有了那一行“使用管理权限创建此任务”&#xff0c;而且cmd也不再是默认的管理员下的&#xff0c;这很不方便,虽然每次winr &#xff0c;输入cmd后可以按ctrlshitenter以管理员权限运行&am…

transformer位置编码最详细的解析

位置编码positional encoding 1. 位置编码是什么&#xff0c;为什么需要它&#xff1f;2. transformer提出的位置编码方法3. 直觉4. 其他细节5. 相对位置6. 常见问题解答 1. 位置编码是什么&#xff0c;为什么需要它&#xff1f; 位置和词语的顺序是任何语言的重要组成部分。它…

STM32f103入门(4)对射式红外传感器计次(外部中断)

中断:在主程序运行过程中&#xff0c;出现了特定的中断触发条件 (中断源)&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时&#xff0c;CPU会根据中断源的轻重缓急进…

useRef 定义的 ref 在控制台可以打印但是页面不生效?

useRef 是一个 React Hook&#xff0c;它能让你引用一个不需要渲染的值。 点击计时器 点击按钮后在控制台可以打印但是页面不生效。 useRef 返回的值在函数组件中不会自动触发重新渲染&#xff0c;所以控制台可以显示变化而按钮上无法显示 ref.current的变化。 import { use…

孙哥Spring源码第14集

第14集 BeanDefintion的创建方式 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】 1、注册BeanDefintion的方式如何根据情况进行选择呢&#xff1f; xml 注解 扫描 import 2、为什么没有人用Import 可以通过注解的方式进行对应类型的注册。 3、ImportSelector和…

代码随想录训练营第42天|416.分割等和子集

代码随想录训练营第42天|416.分割等和子集 416.分割等和子集文章思路代码 总结 416.分割等和子集 文章 代码随想录|0416.分割等和子集 思路 看作容量为总和一半的背包问题&#xff0c;某方案恰好能装满时返回TRUE 二刷&#xff0c;还是不能一遍过 新学了一维数组的写法 代…

Lesson4-3:OpenCV图像特征提取与描述---SIFT/SURF算法

学习目标 理解 S I F T / S U R F SIFT/SURF SIFT/SURF算法的原理&#xff0c;能够使用 S I F T / S U R F SIFT/SURF SIFT/SURF进行关键点的检测 SIFT/SURF算法 1.1 SIFT原理 前面两节我们介绍了 H a r r i s Harris Harris和 S h i − T o m a s i Shi-Tomasi Shi−Tomasi…

Mac下使用Homebrew安装MySQL5.7

Mac下使用Homebrew安装MySQL5.7 1. 安装Homebrew & Oh-My-Zsh2. 查询软件信息3. 执行安装命令4. 开机启动5. 服务状态查询6. 初始化配置7. 登录测试7.1 终端登录7.2 客户端登录 参考 1. 安装Homebrew & Oh-My-Zsh mac下如何安装homebrew MacOS安装Homebrew与Oh-My-Zsh…

港陆证券:服装家纺公司上半年投资并购力度加大

9月1日&#xff0c;嘉曼服饰发布公告&#xff0c;为完善多品牌差异化开展战略&#xff0c;将以自有资金收买暇步士&#xff08;Hush Puppies&#xff09;品牌我国内地及香港、澳门区域IP财物。 面对服饰市场的激烈竞争&#xff0c;本年以来一些服饰类A股公司开启了“买买买”形…

SSRF服务端请求伪造

服务端请求伪造&#xff0c;其实就是攻击者构造恶意请求&#xff0c;服务端发起恶意请求&#xff0c;如果服务端不对用户传递的参数进行严格的过滤和限制&#xff0c;就可能导致服务端请求伪造 上面是百度识图&#xff0c;我们可以传递图片地址&#xff0c;百度识图向图片发起…

哈夫曼编码实现文件的压缩和解压

程序示例精选 哈夫曼编码实现文件的压缩和解压 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《哈夫曼编码实现文件的压缩和解压》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0…

SQL Server2008下载地址

SQL Server2008下载地址 https://www.microsoft.com/zh-CN/download/details.aspx?id30438 版本说明 Microsoft SQL Server 2008 R2 Express Service Pack 2 是功能丰富的 SQL Server 免费版本&#xff0c;是学习、开发桌面、Web 及小型服务器应用程序并为它们提供功能的理…

Office365 Excel中使用宏将汉字转拼音

Office365 Excel中开启宏 文件 - 选项 - 信任中心 - 信任中心设值 - 宏设值 启用VBA宏启用VBA宏时启用Excel 4.0宏信任对VBA工程对象模型的访问 创建宏 视图 - 查看宏 填写名字创建宏&#xff1a;getpy填入下面代码保存&#xff0c;点击否&#xff0c;另存类型为“excel启…

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

目录 求字符串长度&#xff1a; 1. strlen(字符串长度) 长度不受限制函数&#xff1a; 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数&#xff1a; 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…