R語(yǔ)言 data.frame()命令的使用說(shuō)明
同expand.grid() 一樣,data.frame() 也是一個(gè)生產(chǎn)數(shù)據(jù)框的命令
不同的是,兩者產(chǎn)生的結(jié)果,要求不一樣
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
其中,對(duì)于x,m,n所包含的個(gè)數(shù)是有限制的
具體表現(xiàn)在三者或者更多所包含的個(gè)數(shù)這些數(shù)值【x(4),m(3),n(12)】的最小公倍數(shù)為其中一個(gè)(最大的那個(gè)數(shù))
結(jié)果的排列也是不一樣的
首先,行數(shù)為最多那組含有的數(shù)的個(gè)數(shù)
所有的循環(huán)均為依次循環(huán),不像expand.grid()中的后面的還需要先重復(fù)之后再循環(huán)
補(bǔ)充:R 語(yǔ)言處理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的序號(hào)讀取指定sheet的內(nèi)容
data <- read.xlsx("Lipstick.xlsx", sheet = 1) # 讀取excel
View(data)
## data 為 data.frame
# 讀取 table 分隔的文本文件
data = read.table(file.txt, sep="\t", header=T);
訪問(wèn) data.frame 的元素
查看列名 colnames(data)
查看行名 rownames(data)
提取指定行
data[2,] 提取第二行
提取指定列
data[c("列名1", "列名2", "列名3")]
data[2] 提取第二列
data[2:4] 提取第2-4列
如果只訪問(wèn)1列,返回的是 vector 類型,可以使用 [[ ]] 或者 $ 來(lái)訪問(wèn) data[[2]] 或者 data$列名
默認(rèn)情況下,字符串向量會(huì)被自動(dòng)識(shí)別成 Factor
向 data.frame 中添加新列 新添加的列的行數(shù)要和表中的列的行數(shù)相同
data$新列名 <- 數(shù)據(jù) data$新列名 <- as.integer(format(Sys.Date(), "%Y")) - as .integer(format(sutdent$birthday, "%Y"))
查詢/子集
查詢一個(gè)data.frame,返回一個(gè)滿足條件的子集,這相當(dāng)于數(shù)據(jù)庫(kù)中的表查詢,是非常常見(jiàn)的操作。
使用行和列的index來(lái)獲取子集是最簡(jiǎn)單的方法,詳情見(jiàn)前面。
當(dāng)然也可以使用布爾向量,配合which函數(shù)來(lái)實(shí)現(xiàn)對(duì)行的過(guò)濾。
比如我們要查詢所有Gender為F的數(shù)據(jù),那么我們首先通過(guò)student$Gender=="F" 得到一個(gè)布爾向量:FALSE FALSE ... TRUE,然后使用 which 函數(shù)可以將布爾向量中的TRUE的index返回,完整語(yǔ)句如下
student[which(student$Gender=="F")]
如果我們想知道所有女生的年齡,
student[which(student$Gender=="F"), "Age"]
另外可以直接使用 subset() 函數(shù),比如把查詢年齡改為 <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")
連接/合并
對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),對(duì)多表進(jìn)行 join 查詢是一個(gè)很正常的事,在R中也可以對(duì)多個(gè) Data.frame 進(jìn)行連接,需要使用 merge() 函數(shù)
result <- merge(student,score,by.x="ID",by.y="SID")
使用 rbind() 函數(shù) rbind 的兩個(gè) Data frame 必須有相同的列
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言表達(dá)式知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了一篇關(guān)于R語(yǔ)言表達(dá)式知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-03-03
R語(yǔ)言中對(duì)數(shù)據(jù)框的列名重命名的實(shí)現(xiàn)
這篇文章主要介紹了R語(yǔ)言中對(duì)數(shù)據(jù)框的列名重命名的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
R語(yǔ)言rhdf5讀寫hdf5并展示文件組織結(jié)構(gòu)和索引數(shù)據(jù)
這篇文章主要為大家介紹了R語(yǔ)言rhdf5讀寫hdf5并展示文件組織結(jié)構(gòu)和索引數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
pycharm實(shí)現(xiàn)R語(yǔ)言運(yùn)行環(huán)境安裝配置的實(shí)現(xiàn)步驟
大多數(shù)人仍然使用RStudio進(jìn)行R語(yǔ)言開發(fā)。與RStudio相比,PyCharm具有更多的優(yōu)勢(shì),本文主要介紹了pycharm運(yùn)行R語(yǔ)言腳本的實(shí)現(xiàn)步驟,文中通過(guò)圖文介紹的非常詳細(xì),感興趣的可以了解一下2023-10-10
R語(yǔ)言導(dǎo)入CSV數(shù)據(jù)的簡(jiǎn)單方法
這篇文章主要介紹了R語(yǔ)言導(dǎo)入CSV數(shù)據(jù)的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
R語(yǔ)言隨機(jī)數(shù)生成的實(shí)現(xiàn)
這篇文章主要介紹了R語(yǔ)言隨機(jī)數(shù)生成的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

