วิธีส่งสตริงเป็นชื่อตัวแปรใน dplyr


คุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เพื่อส่งผ่านสตริงเป็นชื่อตัวแปรใน dplyr:

วิธีที่ 1: ใช้รับ ()

 df %>% filter(get(my_var) == ' A ')

วิธีที่ 2: ใช้ .data

 df %>% filter(. data [[my_var]] == ' A ')

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24
4 B 88 39 24
5 B 95 34 28

ตัวอย่างที่ 1: ส่งสตริงเป็นชื่อตัวแปรใน dplyr โดยใช้ get()

หากเราพยายามกรองเฟรมข้อมูลโดยส่งสตริงเป็นชื่อตัวแปรไปยังฟังก์ชัน filter() ใน dplyr เราจะได้เฟรมข้อมูลว่าง:

 library (dplyr)

#define variable
my_var <- ' team '

#attempt to filter for rows where team is equal to a variable
df %>% filter(my_var == ' A ')

[1] team points assists rebounds
<0 rows> (or 0-length row.names)

วิธีหนึ่งที่จะหลีกเลี่ยงปัญหานี้ได้คือการล้อมชื่อตัวแปรไว้ในฟังก์ชัน get() :

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(get(my_var) == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

การใช้ฟังก์ชัน get() ในฟังก์ชัน filter() ทำให้เราสามารถกรองแถวของกรอบข้อมูลเฉพาะแถวที่ทีมเท่ากับ A ได้สำเร็จ

ตัวอย่างที่ 2: ส่งสตริงเป็นชื่อตัวแปรใน dplyr โดยใช้ .data

อีกวิธีหนึ่งในการส่งสตริงเป็นชื่อตัวแปรไปยังฟังก์ชัน filter() ใน dplyr คือการใช้ฟังก์ชัน .data ดังนี้:

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(. data [[my_var]] == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

การใช้ฟังก์ชัน .data ในฟังก์ชัน filter() ทำให้เราสามารถกรองแถวในกรอบข้อมูลเฉพาะแถวที่ทีมเท่ากับ A ได้สำเร็จ

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่น ๆ ใน dplyr:

วิธีเลือกแถวแรกตามกลุ่มโดยใช้ dplyr
วิธีกรองตามเงื่อนไขต่างๆ โดยใช้ dplyr
วิธีกรองแถวที่มีสตริงบางตัวโดยใช้ dplyr

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *