R語言 data.frame()命令的使用說明
同expand.grid() 一樣,data.frame() 也是一個生產(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
其中,對于x,m,n所包含的個數(shù)是有限制的
具體表現(xiàn)在三者或者更多所包含的個數(shù)這些數(shù)值【x(4),m(3),n(12)】的最小公倍數(shù)為其中一個(最大的那個數(shù))
結(jié)果的排列也是不一樣的
首先,行數(shù)為最多那組含有的數(shù)的個數(shù)
所有的循環(huán)均為依次循環(huán),不像expand.grid()中的后面的還需要先重復之后再循環(huán)
補充: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的內(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);
訪問 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 中添加新列 新添加的列的行數(shù)要和表中的列的行數(shù)相同
data$新列名 <- 數(shù)據(jù) data$新列名 <- as.integer(format(Sys.Date(), "%Y")) - as .integer(format(sutdent$birthday, "%Y"))
查詢/子集
查詢一個data.frame,返回一個滿足條件的子集,這相當于數(shù)據(jù)庫中的表查詢,是非常常見的操作。
使用行和列的index來獲取子集是最簡單的方法,詳情見前面。
當然也可以使用布爾向量,配合which函數(shù)來實現(xiàn)對行的過濾。
比如我們要查詢所有Gender為F的數(shù)據(jù),那么我們首先通過student$Gender=="F" 得到一個布爾向量:FALSE FALSE ... TRUE,然后使用 which 函數(shù)可以將布爾向量中的TRUE的index返回,完整語句如下
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")
連接/合并
對于數(shù)據(jù)庫來說,對多表進行 join 查詢是一個很正常的事,在R中也可以對多個 Data.frame 進行連接,需要使用 merge() 函數(shù)
result <- merge(student,score,by.x="ID",by.y="SID")
使用 rbind() 函數(shù) rbind 的兩個 Data frame 必須有相同的列
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語言 實現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值
這篇文章主要介紹了R語言 實現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03R語言模擬疫情傳播圖RVirusBroadcast展示疫情數(shù)據(jù)
本文用RVirusBroadcast展示模擬的疫情數(shù)據(jù),讓R語言模擬疫情傳播圖來告訴你為什么還不到出門的時候,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02R語言 實現(xiàn)兩表連接且輸出不重復數(shù)據(jù)
這篇文章主要介紹了R語言 實現(xiàn)兩表連接且輸出不重復數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03