R Data Frame

来源:https://www.cnblogs.com/kungfupanda/archive/2019/08/07/11312830.html
-Advertisement-
Play Games

https://www.datamentor.io/r-programming/data-frame/ Check if a variable is a data frame or not We can check if a variable is a data frame or not using ...


https://www.datamentor.io/r-programming/data-frame/

Check if a variable is a data frame or not

We can check if a variable is a data frame or not using the class() function.

> x
SN Age Name
1  1  21 John
2  2  15 Dora
> typeof(x)    # data frame is a special case of  list
[1] "list"
> class(x)
[1] "data.frame"

In this example, x can be considered as a list of 3 components with each component having a two element vector. Some useful functions to know more about a data frame are given below.


Functions of data frame

> names(x)
[1] "SN"   "Age"  "Name"
> ncol(x)
[1] 3
> nrow(x)
[1] 2
> length(x)    # returns length of the list, same as ncol()
[1] 3

How to create a Data Frame in R?

We can create a data frame using the data.frame() function

For example, the above shown data frame can be created as follows.

> x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" = c("John","Dora"))
> str(x)    # structure of x
'data.frame':   2 obs. of  3 variables:
$ SN  : int  1 2
$ Age : num  21 15
$ Name: Factor w/ 2 levels "Dora","John": 2 1

Notice above that the third column, Name is of type factor, instead of a character vector.

By default, data.frame() function converts character vector into factor.

To suppress this behavior, we can pass the argument stringsAsFactors=FALSE.

> x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" = c("John", "Dora"), stringsAsFactors = FALSE)
> str(x)    # now the third column is a character vector
'data.frame':   2 obs. of  3 variables:
$ SN  : int  1 2
$ Age : num  21 15
$ Name: chr  "John" "Dora"

Many data input functions of R like, read.table()read.csv()read.delim()read.fwf() also read data into a data frame.


How to access Components of a Data Frame?

Components of data frame can be accessed like a list or like a matrix.


Accessing like a list

We can use either [[[ or $ operator to access columns of data frame.

> x["Name"]
Name
1 John
2 Dora
> x$Name
[1] "John" "Dora"
> x[["Name"]]
[1] "John" "Dora"
> x[[3]]
[1] "John" "Dora"

Accessing with [[ or $ is similar. However, it differs for [ in that, indexing with [ will return us a data frame but the other two will reduce it into a vector.


Accessing like a matrix

Data frames can be accessed like a matrix by providing index for row and column.

To illustrate this, we use datasets already available in R. Datasets that are available can be listed with the command library(help = "datasets").

We will use the trees dataset which contains GirthHeight and Volume for Black Cherry Trees.

A data frame can be examined using functions like str() and head().

> str(trees)
'data.frame':   31 obs. of 3 variables:
$ Girth : num  8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...
$ Height: num  70 65 63 72 81 83 66 75 80 75 ...
$ Volume: num  10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ...
> head(trees,n=3)
Girth Height Volume
1   8.3     70   10.3
2   8.6     65   10.3
3   8.8     63   10.2

We can see that trees is a data frame with 31 rows and 3 columns. We also display the first 3 rows of the data frame.

Now we proceed to access the data frame like a matrix.

> trees[2:3,]    # select 2nd and 3rd row
Girth Height Volume
2   8.6     65   10.3
3   8.8     63   10.2
> trees[trees$Height > 82,]    # selects rows with Height greater than 82
Girth Height Volume
6   10.8     83   19.7
17  12.9     85   33.8
18  13.3     86   27.4
31  20.6     87   77.0
> trees[10:12,2]
[1] 75 79 76

We can see in the last case that the returned type is a vector since we extracted data from a single column.

This behavior can be avoided by passing the argument drop=FALSE as follows.

> trees[10:12,2, drop = FALSE]
Height
10     75
11     79
12     76

How to modify a Data Frame in R?

Data frames can be modified like we modified matrices through reassignment.

> x
SN Age Name
1  1  21 John
2  2  15 Dora
> x[1,"Age"] <- 20; x
SN Age Name
1  1  20 John
2  2  15 Dora

Adding Components

Rows can be added to a data frame using the rbind() function.

> rbind(x,list(1,16,"Paul"))
SN Age Name
1  1  20 John
2  2  15 Dora
3  1  16 Paul

Similarly, we can add columns using cbind().

> cbind(x,State=c("NY","FL"))
SN Age Name State
1  1  20 John    NY
2  2  15 Dora    FL

Since data frames are implemented as list, we can also add new columns through simple list-like assignments.

> x
SN Age Name
1  1  20 John
2  2  15 Dora
> x$State <- c("NY","FL"); x
SN Age Name State
1  1  20 John    NY
2  2  15 Dora    FL

Deleting Component

Data frame columns can be deleted by assigning NULL to it.

> x$State <- NULL
> x
SN Age Name
1  1  20 John
2  2  15 Dora

Similarly, rows can be deleted through reassignments.

> x <- x[-1,]
> x
SN Age Name
2  2  15 Dora

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jQuery 滑動方法有三種:slideDown()、slideUp()、slideToggle()。 ...
  • TypeScript學習隨筆(一) 這麼久了還不沒好好學習哈這麼火的ts,邊學邊練邊記吧! 啥子是TypeScript TypeScript 是 JavaScript 的一個超集,支持 es6 標準。 TypeScript 由微軟開發的自由和開源的編程語言。 TypeScript 設計目標是開發大型 ...
  • 前言 現在,很少有人和90年代一樣,自己去實現一個軟體的各個方面,也就是說,在工作中,和人溝通是必備的技能。那麼,作為一枚碼農,如何和他人溝通呢?這就要依靠本文的主題了——UML。 簡介 UML——Unified modeling language UML(統一建模語言),是一種用於軟體系統分析和設 ...
  • 迪米特原則定義 迪米特原則,也叫最少知道原則,即一個類應該 對自己依賴的類知道的越少越好 ,而你被依賴的類多麼複雜,對我都沒有關係。也就是說,對於別依賴的類來說,不管業務邏輯多麼複雜,都應該儘量封裝在類的內部;對外除了必備的public方法,不再泄露任何信息。 1.問題由來 我們知道,類和類是有耦合 ...
  • 最近同事在處理文件導入的時候需要把一批文件換成CSV的格式,但是直覺修改尾碼是不生效的,而且xlsx和xls的文件沒法直接換成CVS的文件,所以找了一下方式,並且自己實現了python的轉換方式。代碼如下 文件需要導入pandas 還要引入xlrd 代碼是基於python3.6的環境。 ...
  • 實例解讀面向對象核心,所有例子基於 C#,涉及我們實務中最常關心的問題: 1、封裝、繼承、多態; 2、抽象類、介面; 3、委托、事件。 ...
  • 前幾天和隔壁鄰居玩鬥地主被髮現了,牌被沒收了,鬥地主是鬥不了了,但我還想和鄰居玩耍。 想破腦袋終於讓我想到一個游戲,數獨!什麼叫數獨?數獨就是可以讓我趁老王不在的時候和隔壁鄰居一起玩耍的游戲! ...
  • 土壤濕度感測器和dh11會獲取數據,然後樹莓派會處理這些數據,讀出土壤溫濕度和空氣溫濕度,並將這些數據上傳到雲伺服器, 雲伺服器會將這些數據顯示在網頁上,同時樹莓派會根據這些數據來決定是否控制繼電器進而控制水泵來澆水,當然,水泵是否澆水也可以通過事先做的網頁看到。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...