每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

数据选取与简单操作:

which 返回一个向量中指定元素的索引
which.max 返回最大元素的索引
which.min 返回最小元素的索引
sample 随机在向量中抽取元素
subset 根据条件选取元素
sort 升序排列元素
rev 反转所有元素
order 获取排序后的索引
table 返回频数表
cut 将数据分割为几部分
split 按照指定条件分割数据
rbind 行合并
cbind 列合并
merge 按照指定列合并矩阵或者数据框

一、数据合并

1、merge()函数

最常用merge()函数,但是这个函数使用时候这两种情况需要注意:

1、merge(a,b),纯粹地把两个数据集合在一起,没有沟通a、b数据集的by,这样出现的数据很多,相当于a*b条数据;

2、merge函数是匹配到a,b数据集的并,都有的才匹配出来,如果a、b数据集ID不同,要用all=T(下面有all用法的代码)。

#横向合并
ID<-c(1,2,3,4)
name<-c("Jim","Tony","Lisa","Tom")
score<-c(89,22,78,78)
student1<-data.frame(ID,name)
student2<-data.frame(ID,score)
total_student<-merge(student1,student2,by="ID")  #或者rbind()
total_student
#纵向合并
ID<-c(1,2,3)
name<-c("Jame","Kevin","Sunny")
student1<-data.frame(ID,name)
ID<-c(4,5,6)
name<-c("Sun","Frame","Eric")
student2<-data.frame(ID,name)
total<-cbind(student1,student2)
total

merge的all用法

> id=c("1","2","3")
> M=c("7","2","3")
> ink2=data.frame(id,M)
>
> merge(ink1,ink2,by="id",all=T)  #所有数据列都放进来,空缺的补值为NA
  id    R    M
1  1    9    7
2  2    7    2
3  4    9 <NA>
4  3 <NA>    3
> merge(ink1,ink2,by="id",all=F)  #默认,只取两者的共有的部分
  id R M
1  1 9 7
2  2 7 2

其中,all=T代表全连接,all.x=T代表左联结;all.y=T代表右连接

2、dplyr包

dplyr包的数据合并,

一般用left_join(x,y,by="name")  以x为主,y中匹配到的都放进来, 但,y中没有的则不放过来。

需要这个x数据集是全集,比较大。

3、paste函数

生成一长串字符向量。

paste(c("X","Y"),1:10,sep="")      #"X”,"Y"是长度为2的字符向量,1:10 长度为10的向量。命令是让这两个向量粘合在一起生成新的字符串向量,粘合后的新字符之间没有间隔。

#—————————paste中seq与collapse区别————————————————————
a = c(1, 2, 3, 4, 5)
names(a) = c('m', 'n','o', 'p', 'q')
# 主要是区分使用sep和collapse
b = paste(a, names(a), sep = "/")          #不同向量合并在一起,但是还是各自向量
c = paste(b, collapse = ",")               #不同向量合并在一起,但是变成一个向量
mode(b) #变量类型
mode(c)

4、cbind和rbind函数

cbind()和rbind(),cbind()按照纵向方向,或者说按列的方式将矩阵连接到一起。

rbind()按照横向的方向,或者说按行的方式将矩阵连接到一起

rbind/cbind对数据合并的要求比较严格:合并的变量名必须一致;数据等长;指标顺序必须一致。相比来说,其他一些方法要好一些,有dplyr,sqldf中的union

5、sqldf包

利用SQL语句来写,进行数据合并,适合数据库熟悉的人,可参考:

R语言︱ 数据库SQL-R连接与SQL语句执行(RODBC、sqldf包)

二、数据增减

x=x[,-1]  #这个就代表,删除了x数据集中第一列数据

或用dplyr包中的mutate函数

a=mutate(Hdma_dat,dou=2*survived,dou4=4*survived)
Hdma_dat$dou=a$dou
Hdma_dat$dou4=a$dou4   #两个新序列,加入到Hdma数据集汇总

筛选变量服从某值的子集

subset(airquality, Temp > 80, select = c(Ozone, Temp))
subset(airquality, Day == 1, select = -Temp)
subset(airquality, select = Ozone:Wind)

三、数据纵横加总

R使用rowSums函数对行求和,使用colSums函数对列求和。

四、不等长合并

1、plyr包

rbind.fill函数可以很好将数据进行合并,并且补齐没有匹配到的缺失值为NA。

#————————————————————————————不等长合并
#如何解决合并时数据不等长问题——两种方法:do.call函数以及rbind.fill函数(plyr包)
#rbind.fill函数只能合并数据框格式
#do.call函数在数据框中执行函数(函数,数据列)
library("plyr")  #加载获取rbind.fill函数
#第一种方法
list1<-list()
list1[[1]]=data.frame(t(data.frame(Job_Pwordseg.ct[1])))
list1[[2]]=data.frame(t(data.frame(Job_Pwordseg.ct[2])))
do.call(rbind.fill,list1)
#第二种方法
u=rbind.fill(data.frame(t(data.frame(Job_Pwordseg.ct[1]))),data.frame(t(data.frame(Job_Pwordseg.ct[2]))))

核心函数是plyr包中的rbind.fill函数(合并的数据,必须是data.frame),do.call可以用来批量执行。(do.call用法

关于do.call其他用法(R语言 函数do.call()使用 )

有一个list,想把里面的所有元素相加求和。发现了两个很有意思的函数

list <- list(matrix(1:25, ncol = 5), matrix(4:28, ncol = 5), matrix(21:45, ncol=5))

list.sum<-do.call(sum,list)

list.sum<-do.call(cbind,list)

do.call() 是告诉list一个函数,然后list里的所有元素来执行这个函数。

2、dplyr包

dplyr::bind_rows()

    mpg   cyl    hp  drat    wt  qsec    vs    am  gear  carb  disp
  (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1  21.0     6   110  3.90 2.620 16.46     0     1     4     4    NA
2  21.0     6   110  3.90 2.875 17.02     0     1     4     4    NA
3  22.8     4    93  3.85 2.320 18.61     1     1     4     1    NA
4  21.4     6   110  3.08 3.215 19.44     1     0     3     1    NA
5  17.8     6   123  3.92 3.440 18.90     1     0     4     4 167.6
6  16.4     8   180  3.07 4.070 17.40     0     0     3     3 275.8
7  17.3     8   180  3.07 3.730 17.60     0     0     3     3 275.8
8  15.2     8   180  3.07 3.780 18.00     0     0     3     3 275.8

效果是,不匹配到的放在最后,且等于NA  NA  NA  NA

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

R语言数据集合并、数据增减、不等长合并的更多相关文章

  1. R语言重要数据集分析研究——R语言数据集的字段含义

    R语言数据集的字段含义 作者:马文敏 选择一种数据结构来储存数据 将数据输入或导入到这个数据结构中 数据集的概念 数据集通常是有数据结构的一个矩形数组,行表示规则,列表示变量. 不同的行业对数据集的行 ...

  2. R语言︱数据集分组、筛选(plit – apply – combine模式、dplyr、data.table)

    R语言︱数据集分组 大型数据集通常是高度结构化的,结构使得我们可以按不同的方式分组,有时候我们需要关注单个组的数据片断,有时需要聚合不同组内的信息,并相互比较. 一.日期分组 1.关于时间的包都有很多 ...

  3. [译]用R语言做挖掘数据《二》

    数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

  4. R语言分析朝阳医院数据

    R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...

  5. R语言实现金融数据的时间序列分析及建模

    R语言实现金融数据的时间序列分析及建模 一 移动平均    移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...

  6. R语言处理Web数据

    R语言处理Web数据 许多网站提供的数据,以供其用户的消费.例如,世界卫生组织(WHO)提供的CSV,TXT和XML文件的形式的健康和医疗信息报告.基于R程序,我们可以通过编程提取这些网站的具体数据. ...

  7. R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  8. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

  9. 转载:R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

随机推荐

  1. 我的java之路week2类的无参、带参方法

    2.1语法 public 返回值类型 方法名(){ //方法体 } 2.2方法的调用语法 对象名.方法名 计算平均分和总成绩 public class Score { /** * 创建类 ScoreC ...

  2. Tensorflow简单CNN实现

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 少说废话多写代码~ """转换图像数据格式时需要将它们的颜色空间变为灰度空间,将图像尺寸修改为同一尺寸,并将标签依 ...

  3. struts2--实现自定义拦截器

    前言: 本篇文章,我想说清实现拦截器的办法,还有为什么要这样做: 目录: 1.需求目的 2.实现步骤及原理(文字怕描述不清,画图描述) 3.代码 4.总结 一.需求目的 规范或限制越级访问(例如:一个 ...

  4. Sonar 常用代码规则整理(一)

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...

  5. dubbo中Listener的实现

    这里继续dubbo的源码旅程,在过程中学习它的设计和技巧,看优秀的代码,我想对我们日程编码必然有帮助的.而那些开源的代码正是千锤百炼的东西,希望和各位共勉. 拿ProtocolListenerWrap ...

  6. BZOJ 3110: [Zjoi2013]K大数查询 [整体二分]

    有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少. N ...

  7. BZOJ 3105: [cqoi2013]新Nim游戏 [高斯消元XOR 线性基]

    以后我也要用传送门! 题意:一些数,选择一个权值最大的异或和不为0的集合 终于有点明白线性基是什么了...等会再整理 求一个权值最大的线性无关子集 线性无关子集满足拟阵的性质,贪心选择权值最大的,用高 ...

  8. BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡 [广义后缀自动机 Trie]

    3926: [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1124  Solved: 660[Submit][S ...

  9. 痞子衡随笔:常用的数据传输差错检测技术(1)- 奇偶校验(Parity Check)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式数据传输里的差错检测技术-奇偶校验. 在嵌入式应用里,除了最核心的数据处理外,我们还会经常和数据传输打交道.数据传输需要硬件传输接口 ...

  10. ChineseUtils

    这里获得汉字的拼音使用了pinyin4j这个插件,因为多音字的原因效果并不理想 /** * 获得汉字拼音 * @param name * @return */ @SuppressWarnings(&q ...