使用R语言-操作data.frame

本文介绍了如何使用R语言对data.frame进行多种操作,包括插入新列、新行、设置列名、创建空data.frame等,并提供了详细的代码示例。此外还展示了如何利用R语言进行数据查询、使用SQL语法查询data.frame等内容。

1 向一个data.frame指定列插入一列新数据

  1.1 插入一列到指定位置

y<-1:4
data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8),x3=c(11,12,13,14),x4=c(15,16,17,18))
data2<-cbind(data1[,1:2],y,data1[,3:ncol(data1)])

    插到data1末尾

data2<-cbind(data1,y)

    插到第一列

data2<-cbind(y,data1)

2 向一个data.frame指定行插入一行新数据

  2.1 插入一行到指定位置

data1<- data.frame(x1=runif(10),x2= runif(10),x3= runif(10))
row<- c(1, 1, 1)
data2<- rbind(data1[1:5,], row, data1[6:nrow(data1), ])

    插入到data1末尾

data2<- rbind(data1, row)

    插入到data1第一行

data2<- rbind(row, data1)

3 给data frame设置列名

colnames(data2) <- c('row1','row3','row3')

4 创建一个空的data frame,并制定列名(方法有点挫,目前还没找到其他方式)

  4.1 创建一个包含一行的,然后用-1取

emptyDF <- data.frame(row1 = c(NA), row2 = c(NA))
emptyDF <- emptyDF[-1,]

  4.2 通过matrix创建data frame

emptyDF <- data.frame(matrix(c(NA), byrow = TRUE,dimnames = list(day = c(),condition = c("outlook","temperature","humidity","wind")), nrow=0, ncol=4))

 5 创建一个data frame,并查看

trainSet2 <-data.frame(
    size=c("大","小","大","大","小","小"),
    weight=c("轻","重","轻","轻","重","轻"),
    color=c("红","红","红","绿","红","绿"),
    taste=c("good","good","bad","bad","bad","good")
)
  size weight color taste
1   大     轻    红  good
2   小     重    红  good
3   大     轻    红   bad
4   大     轻    绿   bad
5   小     重    红   bad
6   小     轻    绿  good

6 查看行名

row.names(trainSet2)

7 查看列名

colnames(trainSet2)

8 数据访问

  访问第一行

trainSet2[1,]

  访问第一列

trainSet2[,1]
trainSet2$size
trainSet2[[1]]
trainSet2[["size"]]

访问多行,例如1,2行

trainSet2[1:2,]

  访问多列,例如1,2列

trainSet2[,1:2]
trainSet2[c("size","weight")]

 9 添加新列

trainSet2$newc1 <- c(1,2,3,4,5,6)
trainSet2 <- within(trainSet2,{newc2 <- color})

 10 数据查询

  10.1 根据条件查询

  查询taste为good的所有行

trainSet2[trainSet2$taste == "good",]

  查询taste为good的指定行

trainSet2[trainSet2$taste == "good",1]
trainSet2[trainSet2$taste == "good",1:2]
trainSet2[trainSet2$taste == "good",c("size","color")]

  也可以用which,跟上面的类似

trainSet2[which(trainSet2$taste == "good"),c("size","color")]

  使用subset,会简化查询,可以指定条件,指定选择列

subset(trainSet2,taste == "good" & newc1 < 5,select = c("size","taste"))

11 使用sql查询data frame

  对于熟悉sql的是个福音啊

  11.1 安装sqldf

install.packages('sqldf')

  11.2 引入sqldf

library(sqldf)

  11.3 查询示例

result <- sqldf("select * from trainSet2 where size='大'")

  11.4 链接合并示例,两个表根据newc1 和 fkey进行链接

trainSet3 <- data.frame(fkey = c(1,2,3,4),newc3=c("a","b","c","d"))
resdult <- merge(trainSet2,trainSet3,by.x = "newc1",by.y = "fkey")
  newc1 size weight color taste newc2 newc3
1     1   大     轻    红  good    红     a
2     2   小     重    红  good    红     b
3     3   大     轻    红   bad    红     c
4     4   大     轻    绿   bad    绿     d

 

转载于:https://www.cnblogs.com/liuchangchun/p/4457478.html

<think>好的,用户想了解GAPIT函数调用链中涉及GAPIT.SS、RandomModel、cbind和data.frame使用。首先,我需要回忆GAPIT包的架构,尤其是GWAS分析流程。GAPIT通常的入口是GAPIT函数,它会调用不同的子函数,比如GAPIT.SS来处理单核苷酸多态性分析。 用户提到的RandomModel可能指的是混合线性模型中的随机效应部分,这通常涉及lm函数或lme4包中的lmer函数。需要确认GAPIT内部是否使用这些包来处理随机效应。 接下来,cbind和data.frame是R中用于数据操作的函数。cbind用于按列合并数据,可能在合并基因型数据和表型数据时使用data.frame用于创建或转换数据框,确保数据结构符合GAPIT的要求。 我需要检查用户提供的引用内容,但看起来引用1关于G代码和引用2关于调试的信息可能与当前问题无关,可能用户误粘贴了其他内容。所以主要依赖对GAPIT和R函数的了解。 用户的需求是追踪函数调用链,可能需要逐步分解GAPIT的工作流程,指出在何时调用GAPIT.SS,如何构建随机模型,以及数据如何通过cbind和data.frame整合。同时,需要确保回答结构清晰,符合用户要求的格式,包括正确使用LaTeX公式和代码块。 可能的问题点包括:GAPIT.SS的具体作用,RandomModel的参数结构,cbind在数据准备中的应用,以及data.frame如何影响后续分析。需要详细说明每个步骤,并给出代码示例帮助用户理解。 最后,生成的相关问题需要围绕性能分析、优化方法和应用场景,但根据用户主题,可能调整为GAPIT的具体使用、模型调整、数据合并技巧和调试方法。</think>以下是对GAPIT函数调用链及数据处理流程的分析,结合R语言中的${\tt RandomModel}$、${\tt cbind}$和${\tt data.frame}$使用: ### 1. GAPIT函数调用链解析 $$GAPIT \rightarrow GAPIT.SS \rightarrow [混合模型构建] \rightarrow [结果输出]$$ 1. **入口函数**:${\tt GAPIT()}$是主控制函数,负责初始化参数和数据结构[^1] 2. **核心模块**:${\tt GAPIT.SS()}$处理单核苷酸多态性(SNP)的关联分析 ```r GAPIT.SS <- function(Y=Y,KI=KI,Z=Z,CV=CV,GK=GK,GD=GT,GM=GI,...) ``` 3. **随机模型**:通过${\tt RandomModel}$参数指定混合线性模型中的随机效应项,例如: ```r myModel <- lmer(Phenotype ~ 1 + (1|Genotype) + (1|Environment), data=phenoData) ``` ### 2. 数据处理关键函数 | 函数 | 作用 | 典型应用场景 | |--------------|-----------------------------|--------------------------| | `cbind()` | 列合并多个数据对象 | 合并基因型与表型数据 | | `data.frame` | 创建结构化数据集 | 构建模型输入数据格式 | **示例代码**: ```r # 使用data.frame创建数据结构 pheno <- data.frame( Taxa = rownames(phenotype_data), Trait = phenotype_data[,1] ) # 使用cbind合并数据 combined_data <- cbind(genotype_matrix, env_factors) ``` ### 3. 完整调用流程示例 ```r library(GAPIT) # 准备数据 GD <- data.frame(snp_matrix) # 基因型数据 GM <- data.frame(map_info) # 遗传图谱 Y <- data.frame(phenotypes) # 表型数据 # 执行GWAS分析 myGAPIT <- GAPIT( Y = Y, GD = GD, GM = GM, model = "MLM", RandomModel = "(1|Population)+(1|Year)" # 指定随机效应项 ) ``` ### 4. 调试技巧 使用${\tt trace()}$函数追踪调用链: ```r trace(GAPIT.SS, browser) # 进入函数时启动调试器 untrace(GAPIT.SS) # 取消追踪 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值