R 數(shù)據(jù)框

數(shù)據(jù)框(Data frame)可以理解成我們常說的"表格"。

數(shù)據(jù)框是 R 語言的數(shù)據(jù)結(jié)構(gòu),是特殊的二維列表。

數(shù)據(jù)框每一列都有一個唯一的列名,長度都是相等的,同一列的數(shù)據(jù)類型需要一致,不同列的數(shù)據(jù)類型可以不一樣。

R 語言數(shù)據(jù)框使用 data.frame() 函數(shù)來創(chuàng)建,語法格式如下:

data.frame(…, row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())
  • : 列向量,可以是任何類型(字符型、數(shù)值型、邏輯型),一般以 tag = value 的形式表示,也可以是 value。

  • row.names: 行名,默認(rèn)為 NULL,可以設(shè)置為單個數(shù)字、字符串或字符串和數(shù)字的向量。

  • check.rows: 檢測行的名稱和長度是否一致。

  • check.names: 檢測數(shù)據(jù)框的變量名是否合法。

  • fix.empty.names: 設(shè)置未命名的參數(shù)是否自動設(shè)置名字。

  • stringsAsFactors: 布爾值,字符是否轉(zhuǎn)換為因子,factory-fresh 的默認(rèn)值是 TRUE,可以通過設(shè)置選項(stringsAsFactors=FALSE)來修改。

以下創(chuàng)建一個簡單的數(shù)據(jù)框,包含姓名、工號、月薪:

table = data.frame(
    姓名 = c("張三", "李四"),
    工號 = c("001","002"),
    月薪 = c(1000, 2000)
    
)
print(table) # 查看 table 數(shù)據(jù)

執(zhí)行以上代碼輸出結(jié)果為:

姓名 工號 月薪
1 張三  001 1000
2 李四  002 2000

數(shù)據(jù)框的數(shù)據(jù)結(jié)構(gòu)可以通過 str() 函數(shù)來展示:

table = data.frame(
    姓名 = c("張三", "李四"),
    工號 = c("001","002"),
    月薪 = c(1000, 2000)
)
# 獲取數(shù)據(jù)結(jié)構(gòu)
str(table)

執(zhí)行以上代碼輸出結(jié)果為:

'data.frame':   2 obs. of  3 variables:
 $ 姓名: chr  "張三" "李四"
 $ 工號: chr  "001" "002"
 $ 月薪: num  1000 2000

summary() 可以顯示數(shù)據(jù)框的概要信息:

table = data.frame(
    姓名 = c("張三", "李四"),
    工號 = c("001","002"),
    月薪 = c(1000, 2000)
    
)
# 顯示概要
print(summary(table))

執(zhí)行以上代碼輸出結(jié)果為:

姓名               工號                月薪     
Length:2           Length:2           Min.   :1000  
Class :character   Class :character   1st Qu.:1250  
Mode  :character   Mode  :character   Median :1500  
                                      Mean   :1500  
                                      3rd Qu.:1750  
                                      Max.   :2000

我們也可以提取指定的列:

table = data.frame(
    姓名 = c("張三", "李四"),
    工號 = c("001","002"),
    月薪 = c(1000, 2000)
)
# 提取指定的列
result <- data.frame(table$姓名,table$月薪)
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

table.姓名 table.月薪
1       張三       1000
2       李四       2000

以下形式顯示前面兩行:

table = data.frame(
    姓名 = c("張三", "李四","王五"),
    工號 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
print(table)
# 提取前面兩行
print("---輸出前面兩行----")
result <- table[1:2,]
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

姓名 工號 月薪
1 張三  001 1000
2 李四  002 2000
3 王五  003 3000
[1] "---輸出前面兩行----"
  姓名 工號 月薪
1 張三  001 1000
2 李四  002 2000

我們可以通過類似坐標(biāo)的形式讀取指定行的某一列的數(shù)據(jù),以下我們讀取第 2 、3 行的第 1 、2 列數(shù)據(jù)::

table = data.frame(
    姓名 = c("張三", "李四","王五"),
    工號 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
# 讀取第 2 、3 行的第 1 、2 列數(shù)據(jù):
result <- table[c(2,3),c(1,2)]
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

姓名 工號
2 李四  002
3 王五  003

擴展數(shù)據(jù)框

我們可以對已有的數(shù)據(jù)框進(jìn)行擴展,以下示例我們添加部門列:

table = data.frame(
    姓名 = c("張三", "李四","王五"),
    工號 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
# 添加部門列
table$部門 <- c("運營","技術(shù)","編輯")

print(table)

執(zhí)行以上代碼輸出結(jié)果為:

姓名 工號 月薪 部門
1 張三  001 1000 運營
2 李四  002 2000 技術(shù)
3 王五  003 3000 編輯

我們可以使用 cbind() 函數(shù)將多個向量合成一個數(shù)據(jù)框:

# 創(chuàng)建向量
sites <- c("Google","Nhooo","Taobao")
likes <- c(222,111,123)
url <- c("www.google.com","www.soo66.com","www.taobao.com")

# 將向量組合成數(shù)據(jù)框
addresses <- cbind(sites,likes,url)

# 查看數(shù)據(jù)框
print(addresses)

執(zhí)行以上代碼輸出結(jié)果為:

     sites    likes url             
[1,] "Google" "222" "www.google.com"
[2,] "Nhooo" "111" "www.soo66.com"
[3,] "Taobao" "123" "www.taobao.com"

如果要對兩個數(shù)據(jù)框進(jìn)行合并可以使用 rbind() 函數(shù):

table = data.frame(
    姓名 = c("張三", "李四","王五"),
    工號 = c("001","002","003"),
    月薪 = c(1000, 2000,3000)
)
newtable = data.frame(
    姓名 = c("小明", "小白"),
    工號 = c("101","102"),
    月薪 = c(5000, 7000)
)
# 合并兩個數(shù)據(jù)框
result <- rbind(table,newtable)
print(result)

執(zhí)行以上代碼輸出結(jié)果為:

姓名 工號 月薪
1 張三  001 1000
2 李四  002 2000
3 王五  003 3000
4 小明  101 5000
5 小白  102 7000
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清