时间:2021-05-20
同expand.grid() 一样,data.frame() 也是一个生产数据框的命令
不同的是,两者产生的结果,要求不一样
其中,对于x,m,n所包含的个数是有限制的
具体表现在三者或者更多所包含的个数这些数值【x(4),m(3),n(12)】的最小公倍数为其中一个(最大的那个数)
结果的排列也是不一样的
首先,行数为最多那组含有的数的个数
所有的循环均为依次循环,不像expand.grid()中的后面的还需要先重复之后再循环
补充:R 语言处理excel为data.frame
使用 R包 xlsx 或者 openxlsx
文件名+sheet的序号读取指定sheet的内容
data <- read.xlsx("Lipstick.xlsx", sheet = 1) # 读取excelView(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 必须有相同的列
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言:近段时间学习R语言用到最多的数据格式就是data.frame,现对data.frame常用操作进行总结,其中函数大部分来自dplyr包,该包由Hadley
对于那些有一点编程经验的人来说,vector,matrix,array,list,data.frame就相当于编程语言中的容器,因为只是将R看做数据处理工具所以
本文主要介绍了R语言中矩阵matrix和数据框data.frame的一些使用,分享给大家,具体如下:"一,矩阵matrix""创建向量"x_1=c(1,2,3)
mergedataframes(inner,outer,left,right)数据>df1=data.frame(CustomerId=c(1:6),Produ
如下所示:library(ggplot2)library(ggthemes)dt=data.frame(obj=c('A','D','B','E','C'),v