R Data Frame: วิธีสร้าง ผนวก เลือก และเซ็ตย่อย

Data Frame คืออะไร?

A กรอบข้อมูล เป็นรายการเวกเตอร์ที่มีความยาวเท่ากัน เมทริกซ์ประกอบด้วยข้อมูลเพียงประเภทเดียว ในขณะที่กรอบข้อมูลยอมรับประเภทข้อมูลที่แตกต่างกัน (ตัวเลข ตัวอักษร ตัวประกอบ ฯลฯ)

วิธีสร้างกรอบข้อมูล

เราสามารถสร้าง dataframe ขึ้นมาได้ R โดยการส่งตัวแปร a,b,c,d ไปยังฟังก์ชัน data.frame() เราสามารถสร้าง dataframe และตั้งชื่อคอลัมน์ด้วย name() และระบุชื่อของตัวแปรได้

data.frame(df, stringsAsFactors = TRUE)

ข้อโต้แย้ง:

  • df: อาจเป็นเมทริกซ์สำหรับแปลงเป็นกรอบข้อมูลหรือชุดของตัวแปรที่จะรวม
  • stringsAsFactors: แปลงสตริงเป็นตัวประกอบตามค่าเริ่มต้น

เราสามารถสร้าง dataframe ใน R สำหรับชุดข้อมูลแรกของเราโดยการรวมตัวแปรสี่ตัวที่มีความยาวเท่ากัน

# Create a, b, c, d variables
a <- c(10,20,30,40)
b <- c('book', 'pen', 'textbook', 'pencil_case')
c <- c(TRUE,FALSE,TRUE,FALSE)
d <- c(2.5, 8, 10, 7)
# Join the variables to create a data frame
df <- data.frame(a,b,c,d)
df

Output:

##     a         b     c     d
## 1  10        book  TRUE   2.5
## 2  20         pen  FALSE  8.0
## 3  30    textbook  TRUE   10.0
## 4  40 pencil_case  FALSE  7.0

เราจะเห็นว่าส่วนหัวของคอลัมน์มีชื่อเดียวกันกับตัวแปร เราสามารถเปลี่ยนชื่อคอลัมน์ใน R ด้วยชื่อฟังก์ชัน () ตรวจสอบตัวอย่าง R สร้าง dataframe ด้านล่าง:

# Name the data frame
names(df) <- c('ID', 'items', 'store', 'price')
df

Output:

##   ID       items store price
## 1 10        book  TRUE   2.5
## 2 20         pen FALSE   8.0
## 3 30    textbook  TRUE  10.0
## 4 40 pencil_case FALSE   7.0
# Print the structure
str(df)

Output:

## 'data.frame':    4 obs. of  4 variables:
##  $ ID   : num  10 20 30 40
##  $ items: Factor w/ 4 levels "book","pen","pencil_case",..: 1 2 4 3
##  $ store: logi  TRUE FALSE TRUE FALSE
##  $ price: num  2.5 8 10 7

ตามค่าเริ่มต้น data frame จะส่งคืนตัวแปรสตริงเป็นตัวประกอบ

กรอบข้อมูลสไลซ์

เป็นไปได้ที่จะเป็นค่า SLICE ของ Data Frame เราเลือกแถวและคอลัมน์ที่จะกลับเข้าไปในวงเล็บนำหน้าด้วยชื่อของกรอบข้อมูล

กรอบข้อมูลประกอบด้วยแถวและคอลัมน์ df[A, B] A แทนแถวและ B แทนคอลัมน์ เราสามารถแบ่งส่วนได้โดยการระบุแถวและ/หรือคอลัมน์

จากภาพที่ 1 ส่วนด้านซ้ายแสดงถึง แถว และส่วนที่ถูกต้องก็คือ คอลัมน์- โปรดทราบว่าสัญลักษณ์ : หมายถึง ไปยัง- ตัวอย่างเช่น 1:3 ตั้งใจที่จะเลือกค่าจาก 1 ไปยัง 3.

กรอบข้อมูลสไลซ์

ในแผนภาพด้านล่าง เราจะแสดงวิธีการเข้าถึงการเลือกต่างๆ ของกรอบข้อมูล:

  • ลูกศรสีเหลืองเลือก แถว 1 ใน คอลัมน์ 2
  • ลูกศรสีเขียวเลือก แถว เพื่อ 1 2
  • ลูกศรสีแดงเลือก คอลัมน์ 1
  • ลูกศรสีน้ำเงินเลือก แถว 1 ถึง 3 และ คอลัมน์ เพื่อ 3 4

โปรดทราบว่าหากเราปล่อยให้ส่วนด้านซ้ายว่างไว้ R จะเลือก ทุกแถว- โดยการเปรียบเทียบ ถ้าเราปล่อยให้ส่วนด้านขวาว่างไว้ R จะเลือก คอลัมน์ทั้งหมด.

กรอบข้อมูลสไลซ์

เราสามารถรันโค้ดในคอนโซลได้:

## Select row 1 in column 2
df[1,2]

Output:

## [1] book
## Levels: book pen pencil_case textbook
## Select Rows 1 to 2
df[1:2,]

Output:

##   ID items store price
## 1 10  book  TRUE   2.5
## 2 20   pen FALSE   8.0
## Select Columns 1
df[,1]

Output:

## [1] 10 20 30 40
## Select Rows 1 to 3 and columns 3 to 4
df[1:3, 3:4]

Output:

##   store price
## 1  TRUE   2.5
## 2 FALSE   8.0
## 3  TRUE  10.0

นอกจากนี้ยังสามารถเลือกคอลัมน์ที่มีชื่อได้อีกด้วย ตัวอย่างเช่น โค้ดด้านล่างแยกสองคอลัมน์: ID และร้านค้า

# Slice with columns name
df[, c('ID', 'store')]

Output:

##   ID store
## 1 10  TRUE
## 2 20 FALSE
## 3 30  TRUE
## 4 40 FALSE

ผนวกคอลัมน์เข้ากับ Data Frame

คุณยังสามารถผนวกคอลัมน์เข้ากับ Data Frame ได้อีกด้วย คุณต้องใช้สัญลักษณ์ $ เพื่อต่อท้ายตัวแปร dataframe R และเพิ่มคอลัมน์ลงใน dataframe ใน R

# Create a new vector
quantity <- c(10, 35, 40, 5)

# Add `quantity` to the `df` data frame
df$quantity <- quantity
df

Output:

##   ID       items store price quantity
## 1 10        book  TRUE   2.5       10
## 2 20         pen FALSE   8.0       35
## 3 30    textbook  TRUE  10.0       40
## 4 40 pencil_case FALSE   7.0        5

หมายเหตุ: จำนวนองค์ประกอบในเวกเตอร์จะต้องเท่ากับจำนวนองค์ประกอบในกรอบข้อมูล การดำเนินการคำสั่งต่อไปนี้เพื่อเพิ่มคอลัมน์ในกรอบข้อมูล R

quantity <- c(10, 35, 40)
# Add `quantity` to the `df` data frame
df$quantity <- quantity

ให้ข้อผิดพลาด:

Error in `

lt;-.data.frame`(`*tmp*`, quantity, value = c(10, 35, 40))
 replacement has 3 rows, data has 4

เลือกคอลัมน์ของกรอบข้อมูล

บางครั้ง เราจำเป็นต้องจัดเก็บคอลัมน์ในกรอบข้อมูลเพื่อใช้ในอนาคตหรือดำเนินการกับคอลัมน์ เราสามารถใช้เครื่องหมาย $ เพื่อเลือกคอลัมน์จากกรอบข้อมูลได้

# Select the column ID
df$ID

Output:

## [1] 1 2 3 4

เซ็ตย่อยกรอบข้อมูล

ในส่วนก่อนหน้านี้ เราเลือกทั้งคอลัมน์โดยไม่มีเงื่อนไข มันเป็นไปได้ที่จะ ชุดย่อย ขึ้นอยู่กับว่าเงื่อนไขบางอย่างเป็นจริงหรือไม่

เราใช้ฟังก์ชัน subset()

subset(x, condition)
arguments:
- x: data frame used to perform the subset
- condition: define the conditional statement

เราต้องการคืนเฉพาะสินค้าที่มีราคามากกว่า 10 เราสามารถทำได้:

# Select price above 5
subset(df, subset = price > 5)

Output:

ID       items store price
2 20         pen FALSE     8
3 30    textbook  TRUE    10
4 40 pencil_case FALSE     7