R语言 data.frame()命令的使用说明

同expand.grid() 一样,data.frame() 也是一个生产数据框的命令

不同的是,两者产生的结果,要求不一样

data.frame() 的命令,如

data.frame(x=c(1:4),m=c(10,20,30),n=c(5:16))
  x m n
1 1 10 5
2 2 20 6
3 3 30 7
4 4 10 8
5 1 20 9
6 2 30 10
7 3 10 11
8 4 20 12
9 1 30 13
10 2 10 14
11 3 20 15
12 4 30 16

其中,对于x,m,n所包含的个数是有限制的

具体表现在三者或者更多所包含的个数这些数值【x(4),m(3),n(12)】的最小公倍数为其中一个(最大的那个数)

结果的排列也是不一样的

首先,行数为最多那组含有的数的个数

所有的循环均为依次循环,不像expand.grid()中的后面的还需要先重复之后再循环

补充:R 语言处理excel为data.frame

使用 R包 xlsx 或者 openxlsx

安装

install.packages("xlsx", repos="https://cloud.r-project.org/")
install.packages("openxlsx", repos="https://cloud.r-project.org/")

使用

文件名+sheet的序号读取指定sheet的内容

data <- read.xlsx("Lipstick.xlsx", sheet = 1) # 读取excel
View(data)
## data 为 data.frame
# 读取 table 分隔的文本文件
data = read.table(file.txt, sep="\t", header=T);

访问 data.frame 的元素

查看列名 colnames(data)

查看行名 rownames(data)

提取指定行

data[2,] 提取第二行

提取指定列

data[c("列名1", "列名2", "列名3")] 

data[2] 提取第二列

data[2:4] 提取第2-4列

如果只访问1列,返回的是 vector 类型,可以使用 [[ ]] 或者 $ 来访问 data[[2]] 或者 data$列名

默认情况下,字符串向量会被自动识别成 Factor

向 data.frame 中添加新列 新添加的列的行数要和表中的列的行数相同

data$新列名 <- 数据
data$新列名 <- as.integer(format(Sys.Date(), "%Y")) - as .integer(format(sutdent$birthday, "%Y"))

查询/子集

查询一个data.frame,返回一个满足条件的子集,这相当于数据库中的表查询,是非常常见的操作。

使用行和列的index来获取子集是最简单的方法,详情见前面。

当然也可以使用布尔向量,配合which函数来实现对行的过滤。

比如我们要查询所有Gender为F的数据,那么我们首先通过student$Gender=="F" 得到一个布尔向量:FALSE FALSE ... TRUE,然后使用 which 函数可以将布尔向量中的TRUE的index返回,完整语句如下

student[which(student$Gender=="F")] 

如果我们想知道所有女生的年龄,

student[which(student$Gender=="F"), "Age"]

另外可以直接使用 subset() 函数,比如把查询年龄改为 <30 的女性,查询姓名和年龄,如下

subset(student, Gender=="F" & Age < 30, select=c("Name", "Age"))

使用SQL查询 Data Frame 使用 sqldf 包

library(sqldf)
result <- sqldf("select Name, Age from student where Gender='F' and Age > 30")

连接/合并

对于数据库来说,对多表进行 join 查询是一个很正常的事,在R中也可以对多个 Data.frame 进行连接,需要使用 merge() 函数

result <- merge(student,score,by.x="ID",by.y="SID")

使用 rbind() 函数 rbind 的两个 Data frame 必须有相同的列

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言 实现手动设置xy轴刻度的操作

    在R中,plot函数作图时会自动给出xy轴的刻度标度,如下图: 有时我们需要自己定义xy轴的刻度,这时我们可以用axis中的at和labels参数来更改. 首先,我们先令plot不要画出xy轴的标度 然后,用axis函数设置xy轴的刻度 这样xy轴的刻度就完全按照我们自己的意愿显示了,也可以设置at参数不是均匀的,总之,用这两个参数就可以完全自己控制xy轴的刻度显示了 补充:R语言自定义坐标轴示例 我就废话不多说了,大家还是直接看代码吧~ x <- c(1:10) y <- x z <-

  • R语言 中文乱码的解决方案

    问题背景 在R Studio中重新载入之前编辑好的.r文件,结果发现内容中的所有中文都乱码了. 问题解决 在R Studio中选择菜单栏File->Reopen with Encoding- 选择当初编辑.r文件保存的格式,如常见的UTF-8: 最后确定,乱码问题搞定. 补充:2个实用的解决R语言中文乱码方法 导入R代码出现中文乱码是时长发生的让人头疼的事情,两个经常用到的方法供参考. 方法1 导入R代码,出现乱码,依次点击File-Reopen with encoding-Choose enc

  • R语言 实现多行注释的方式

    R语言本身并没有类似C/ C++/ JAVA这些语言一样提供 像 /* ..... */ 一样的多行注释,但我们也有其他方法可以达到这种方法. 一. if语句 我们可以通过一个if语句,里面添加一个永为假的条件,这样也可以达到多行注释的目的. if(FALSE) { ...... } 二. 使用快捷键 使用快捷键这种方法,仅在RStudio中可以使用.首先选中要注释掉的行,然后按 Ctrl+shift+C ,这样就注释掉了.这其实和单行注释的方法一样,只不过RStudio帮我们简化而已. 如果要

  • R语言 使用ggplot2绘制好看的分组散点图

    我们以iris数据集为例,该数据集包括花萼的长度和宽度,花瓣的长度和宽度,以及物种,如下图: 本文我们要绘制不同物种下花萼的长度和宽度的分布情况,以及二者之间的相关性关系. 1. 首先载入ggplot2包, library(ggplot2) 2. 然后进行ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())绘制,在绘制中第一个参数是数据,第二个参数是数据映射,是绘制的全局变量,其中包含的参数有x,y,col

  • R语言ggplot2x轴顺序设置自定义颜色的操作

    先声明一下所用的数据集 第一个图如下 这个图主要在于x轴的顺序设置上,如果按不做任何处理的话>3那个就会在2之前,解决方法是b[,1]<-factor(b[,1],levels=c('2','3',">3")),这句代码可以重新设置因子的级别 完整代码如下: a[,1]<-factor(a[,1],levels=c('2','3',">3")) ggplot(a,aes(x=a[,1],y=a[,2]))+geom_bar(stat=&

  • R语言ggplot2包之注释方式

    引言 光光展示数据对可视化来说,远远不够.还有其他很多信息能够帮助读者解释你的数据.除了标签.坐标轴.图例外,还能够增加注释,比如强调图画的某一区域,添加描述性文本等. 添加文本注释 你可以在图形中添加文本,增加可读性.我们在annotate函数中设置text参数即可. library(ggplot2) library(gcookbook) p <- ggplot(faithful, aes(x=eruptions, y=waiting)) + geom_point() p + annotate

  • R语言的一个加法函数使用介绍

    我就废话不多说了,大家还是直接看代码吧~ ## R语言中的加法函数 add4 <- function(x, y) { x + y } 一个复杂一些的R语言程序 ## R语言程序 add2 <- function(x, y) { x + y } above10 <- function(x) { use <- x > 10 x[use] } above <- function(x, n) { use <- x>n x[use] } columnmean <

  • R语言 实现矩阵相乘100次

    [D1 D2]2*1 [T1 T2]1*2 要求D1和D2随机的变动, 矩阵相乘100次 rm(list=ls()) gc() options(scipen = 2000) ##################写成函数###########3 #################定义TT矩阵(1*2) TT <- matrix(c(1,3),1,2) DD<- matrix(c(1,2),2,1) result1 <- DD %*% TT m1=result1 ##############

  • R语言 ggplot2改变柱状图的顺序操作

    如下所示: library(ggplot2) library(ggthemes) dt = data.frame(obj = c('A','D','B','E','C'), val = c(2,15,6,9,7)) dt$obj = factor(dt$obj, levels=c('D','B','C','A','E')) ## 设置柱条的顺序 p = ggplot(dt, aes(x = obj, y = val, fill = obj, group = factor(1))) + geom_

  • R语言 data.frame()命令的使用说明

    同expand.grid() 一样,data.frame() 也是一个生产数据框的命令 不同的是,两者产生的结果,要求不一样 data.frame() 的命令,如 data.frame(x=c(1:4),m=c(10,20,30),n=c(5:16)) x m n 1 1 10 5 2 2 20 6 3 3 30 7 4 4 10 8 5 1 20 9 6 2 30 10 7 3 10 11 8 4 20 12 9 1 30 13 10 2 10 14 11 3 20 15 12 4 30 16

  • R语言 Factor类型的变量使用说明

    factor类型的创建 1. factor( ) > credit_rating <- c("BB", "AAA", "AA", "CCC", "AA", "AAA", "B", "BB") #生成名为credit_rating的字符向量 > credit_factor <- factor(credit_rating) #

  • R语言中矩阵matrix和数据框data.frame的使用详解

    本文主要介绍了R语言中矩阵matrix和数据框data.frame的一些使用,分享给大家,具体如下: "一,矩阵matrix" "创建向量" x_1=c(1,2,3) x_1=c(1:3) x_2=1:3 typeof(x_1)==typeof(x_2)#查看目标类型 x_3=seq(1,6,length=3)#将1--6分为3个数 a<-rep(1:3,each=3) #1到3依次重复 c<-rep(1:3,times=3) #1到3重复3次 d<

  • R语言 实现data.frame 分组计数、求和等

    df为1个data.frame对象,有stratum和psu两列,这里统计stratum列计数 方法1: cnt = table(df$stratum) 方法2: cnt = tapply(df$psu, INDEX=df$stratum, FUN=length) 在方法2的基础上,只要改变FUN函数就可以实现分组求和.求均值等功能,如下 分组求均值: tapply(df$psu, INDEX=df$stratum, FUN=mean) #(等价于python中的df.groupby('stra

  • R语言常用命令集合

    R语言常用命令 help.start()//打开帮助文档 q()//推出函数 ls()//返回处于现在名空间的对象名称 rm()//清楚对象:rm(list=ls())清除所有内存数据 gc()//垃圾回收数据 sqrt(x)//标准差 rnorm()函数 rnorm(n, mean = 0, sd = 1) n 为产生随机值个数(长度),mean 是平均数, sd 是标准差,如果没有设置mean和sd的话,他们的默认值分别为0和1 .使用该函数的时候后,一般要赋予它 3个值.rnorm() 函

  • R语言读取excel数据的方法(两行命令)

    安装库 安装xlsx install.packages("xlsx") 使用 library(xlsx) ray = read.xlsx('D:/Code/R/Data in Excel/Chapter 8/gamma-ray.xls',1) 后面的参数,第一个放地址,第二个放具体sheet页(这里除了可以放数值之外,还可以放对应的名字(字符串)).除此之外,还可以使用encoding="utf-8"的方式来定义使用中文数据. 效果: > a = read.x

  • R语言中data.frame的常用操作总结

    前言:近段时间学习R语言用到最多的数据格式就是data.frame,现对data.frame常用操作进行总结,其中函数大部分来自dplyr包,该包由Hadley Wickham所作,主要用于数据的清洗和整理. 一.创建 data.frame创建较为容易,调用data.frame函数即可.本文创建一个关于学生成绩的数据框,接下来大部分操作都对该数据框进行,其中学生成绩随机产生 > library(dplyr) #导入dplyr包 > options(digits = 0) #保留整数 >

  • linux命令行下使用R语言绘图实例讲解

    使用系统:centos 6.4 64bit 在R语言中可以使用png()等函数生成图片,例如: png("aa.png")可以生成图片. 但是如果你是通过shell远程连接到系统上,可能会碰到如下错误: > png("aa.png") 错误于.External2(C_X11, paste("png::", filename, sep = ""), g$width,  :    无法打开PNG设备 此外: 警告信息: In

  • R语言导入导出数据的几种方法汇总

    导出: 对于某一数据集导出文件的方法 导出例子:write.csv(data_1,file = "d:/1111111111.csv") 其中data_1是你的数据集,file是你的存储路径和要存储的名字 导入: 1  使用键盘输入数据 (1) 创建一个空数据框(或矩阵),其中变量名和变量的模式需与理想中的最终数据集一致: (2)针对这个数据对象调用文本编辑器,输入你的数据,并将结果保存回此数据对象中. 在下例中,你将创建一个名为mydata的数据框,它含有三个变量:age(数值型).

  • R语言中对数据框的列名重命名的实现

    报错类型 Error: All arguments must be named plyr中的rename和dplyr中的rename用法是不同的. plyr::rename rename(data, c(old=new)) dplyr::rename rename(data, new = old) Example 比如, 默认的是plyr的rename, 运行下面命令, 会报错: d <- data.frame(old1=1:3, old2=4:6, old3=7:9) d library(ti

随机推荐