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