คำถามติดแท็ก dplyr

ใช้แท็กนี้สำหรับคำถามเกี่ยวกับฟังก์ชันจากแพ็คเกจ dplyr เช่น group_by สรุปกรองและเลือก

3
data.table vs dplyr: คนหนึ่งทำสิ่งที่ดีไม่ได้หรือไม่ดี?
ภาพรวม ฉันค่อนข้างคุ้นเคยกับไม่มากด้วยdata.table dplyrฉันได้อ่านdplyrบทความสั้น ๆและตัวอย่างที่ผุดขึ้นมาบน SO และจนถึงตอนนี้ข้อสรุปของฉันก็คือ: data.tableและdplyrเทียบเคียงได้กับความเร็วยกเว้นเมื่อมีหลายกลุ่ม (เช่น> 10-100K) และในบางกรณี (ดูมาตรฐานด้านล่าง) dplyr มีไวยากรณ์ที่เข้าถึงได้มากขึ้น dplyr บทคัดย่อ (หรือจะ) ปฏิสัมพันธ์ DB ที่มีศักยภาพ มีความแตกต่างการทำงานเล็กน้อย (ดู "ตัวอย่าง / การใช้งาน" ด้านล่าง) ในใจของฉัน 2. ไม่ได้รับน้ำหนักมากเพราะฉันค่อนข้างคุ้นเคยกับมันdata.tableแต่ฉันเข้าใจว่าสำหรับผู้ใช้ที่เพิ่งเริ่มใช้ทั้งสองจะเป็นปัจจัยสำคัญ data.tableฉันต้องการที่จะหลีกเลี่ยงการโต้แย้งเกี่ยวกับการที่สามารถใช้งานง่ายมากขึ้นเป็นที่ไม่เกี่ยวข้องสำหรับคำถามที่เฉพาะเจาะจงของฉันถามจากมุมมองของคนที่คุ้นเคยกับ ฉันยังต้องการหลีกเลี่ยงการอภิปรายเกี่ยวกับวิธีการที่ "ใช้งานง่ายมากขึ้น" นำไปสู่การวิเคราะห์ที่รวดเร็วขึ้น (แน่นอนจริง แต่อีกครั้งไม่ใช่สิ่งที่ฉันสนใจมากที่สุดที่นี่) คำถาม สิ่งที่ฉันอยากรู้คือ: มีงานการวิเคราะห์ที่ง่ายกว่าในการเขียนโค้ดด้วยแพ็คเกจหนึ่งหรืออีกแพคเกจสำหรับผู้ที่คุ้นเคยกับแพ็คเกจ (เช่นการกดแป้นบางอย่างร่วมกับการใช้ระดับ esotericism ที่ต้องการ มีงานวิเคราะห์ที่ดำเนินการอย่างมีนัยสำคัญ (เช่นมากกว่า 2x) มีประสิทธิภาพมากกว่าในแพ็คเกจหนึ่งเทียบกับแพ็คเกจอื่น หนึ่งคำถามดังนั้นเมื่อเร็ว ๆ นี้มีฉันคิดเกี่ยวกับเรื่องนี้มากขึ้นอีกนิดเพราะจนถึงจุดที่ผมไม่คิดว่าจะมีมากเกินกว่าสิ่งที่ฉันสามารถทำได้ในdplyr data.tableนี่คือdplyrวิธีแก้ปัญหา (ข้อมูลเมื่อสิ้นสุด Q): …
758 r  data.table  dplyr 

5
แสดง / พิมพ์แถวทั้งหมดของ tibble (tbl_df)
tibble(ก่อนหน้านี้tbl_df) เป็นรุ่นของกรอบข้อมูลที่สร้างขึ้นโดยdplyrแพคเกจการจัดการกรอบข้อมูลในอาร์มันจะป้องกันการแสดงผลตารางยาวเมื่อเรียกเฟรมข้อมูลโดยไม่ตั้งใจ เมื่อกรอบข้อมูลถูกล้อมรอบด้วยtibble/ tbl_dfมีคำสั่งให้ดูกรอบข้อมูลทั้งหมดหรือไม่ (แถวและคอลัมน์ทั้งหมดของกรอบข้อมูล)? ถ้าฉันใช้df[1:100,]ฉันจะเห็นทั้ง 100 แถว แต่ถ้าฉันใช้df[1:101,]มันจะแสดงเฉพาะ 10 แถวแรกเท่านั้น ฉันต้องการแสดงแถวทั้งหมดอย่างง่ายดายเพื่อเลื่อนดูอย่างรวดเร็ว มีคำสั่ง dplyr ที่จะตอบโต้เรื่องนี้หรือวิธีแกะเฟรมข้อมูลหรือไม่?
192 r  dplyr  options  display 

4
กรองแถวที่มีสตริงที่แน่นอน
RTBฉันต้องกรองกรอบข้อมูลโดยใช้เป็นเกณฑ์แถวผู้ที่อยู่ในที่มีอยู่สตริง dplyrฉันใช้ d.del <- df %>% group_by(TrackingPixel) %>% summarise(MonthDelivery = as.integer(sum(Revenue))) %>% arrange(desc(MonthDelivery)) ฉันรู้ว่าฉันสามารถใช้ฟังก์ชั่นfilterในdplyrแต่ฉันทำไม่ได้ว่าวิธีการบอกให้ตรวจสอบเนื้อหาของสตริง TrackingPixelโดยเฉพาะอย่างยิ่งผมต้องการที่จะตรวจสอบเนื้อหาในคอลัมน์ หากสตริงมีฉลากRTBฉันต้องการลบแถวจากผล
188 r  filter  dplyr 

5
สามารถใช้แพ็คเกจ dplyr สำหรับการกลายพันธุ์แบบมีเงื่อนไขได้หรือไม่?
สามารถใช้การกลายพันธุ์เมื่อการกลายพันธุ์เป็นเงื่อนไขหรือไม่ (ขึ้นอยู่กับค่าของค่าคอลัมน์บางอย่าง)? ตัวอย่างนี้ช่วยแสดงสิ่งที่ฉันหมายถึง structure(list(a = c(1, 3, 4, 6, 3, 2, 5, 1), b = c(1, 3, 4, 2, 6, 7, 2, 6), c = c(6, 3, 6, 5, 3, 6, 5, 3), d = c(6, 2, 4, 5, 3, 7, 2, 6), e = c(1, 2, 4, 5, 6, …

7
แตกคอลัมน์ dplyr tbl เป็นเวกเตอร์
มีวิธีที่ชัดเจนมากขึ้นในการรับหนึ่งคอลัมน์ของ dplyr tbl เป็นเวกเตอร์จาก tbl ที่มีฐานข้อมูลส่วนหลัง (เช่นเฟรมข้อมูล / ตารางไม่สามารถเซ็ตย่อยได้โดยตรง) require(dplyr) db <- src_sqlite(tempfile(), create = TRUE) iris2 <- copy_to(db, iris) iris2$Species # NULL นั่นคงง่ายเกินไปดังนั้น collect(select(iris2, Species))[, 1] # [1] "setosa" "setosa" "setosa" "setosa" etc. แต่ดูเหมือนจะเงอะงะนิดหน่อย

8
แก้ไขคำเตือนหลายคอลัมน์“ ไม่ทราบคอลัมน์”
ฉันมีคำเตือน "คอลัมน์ที่ไม่รู้จัก" ที่มีอยู่หลายคำสำหรับคำสั่งทุกประเภท (เช่น str (x) เพื่อติดตั้งการอัปเดตบนแพ็คเกจ) และไม่แน่ใจว่าจะแก้ไขข้อผิดพลาดหรือแก้ไขได้อย่างไร คำเตือน "คอลัมน์ที่ไม่รู้จัก" เกี่ยวข้องอย่างชัดเจนกับตัวแปรใน tbl_df ที่ฉันเปลี่ยนชื่อ แต่คำเตือนปรากฏขึ้นในคำสั่งทุกชนิดที่ดูเหมือนจะไม่เกี่ยวข้องกับ tbl_df (เช่นการติดตั้งการอัปเดตบนแพ็คเกจ str (x) โดยที่ x คือ เพียงแค่เวกเตอร์ตัวละคร)
171 r  dplyr 

9
ใช้ชื่อตัวแปรแบบไดนามิกใน `dplyr '
ฉันต้องการใช้dplyr::mutate()เพื่อสร้างคอลัมน์ใหม่หลายคอลัมน์ในกรอบข้อมูล ชื่อคอลัมน์และเนื้อหาควรถูกสร้างขึ้นแบบไดนามิก ตัวอย่างข้อมูลจากม่านตา: library(dplyr) iris <- tbl_df(iris) ฉันได้สร้างฟังก์ชันเพื่อกลายพันธุ์คอลัมน์ใหม่ของฉันจากPetal.Widthตัวแปร: multipetal <- function(df, n) { varname <- paste("petal", n , sep=".") df <- mutate(df, varname = Petal.Width * n) ## problem arises here df } ตอนนี้ฉันสร้างการวนซ้ำเพื่อสร้างคอลัมน์ของฉัน: for(i in 2:5) { iris <- multipetal(df=iris, n=i) } อย่างไรก็ตามเนื่องจาก mutate คิดว่า varname เป็นชื่อตัวแปรตามตัวอักษรการวนซ้ำจึงสร้างเพียงหนึ่งตัวแปรใหม่ (เรียกว่า varname) …
168 r  dplyr  r-faq 

9
จัดกลุ่มตามหลายคอลัมน์ใน dplyr โดยใช้อินพุตเวกเตอร์สตริง
ฉันพยายามโอนความเข้าใจของ plyr ไปเป็น dplyr แต่ฉันไม่สามารถหาวิธีจัดกลุ่มตามคอลัมน์หลายคอลัมน์ได้ # make data with weird column names that can't be hard coded data = data.frame( asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE), a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE), value = rnorm(100) ) # get the columns we want to average within columns = names(data)[-3] # plyr - works …
157 r  dplyr  r-faq 

7
ความถี่ / สัดส่วนสัมพัทธ์ที่มี dplyr
สมมติว่าฉันต้องการคำนวณสัดส่วนของค่าต่าง ๆ ภายในแต่ละกลุ่ม ยกตัวอย่างเช่นการใช้mtcarsข้อมูลที่ฉันจะคำนวณญาติความถี่ของจำนวนเกียร์โดยน (อัตโนมัติ / คู่มือ) ในหนึ่งไปด้วยdplyr? library(dplyr) data(mtcars) mtcars <- tbl_df(mtcars) # count frequency mtcars %>% group_by(am, gear) %>% summarise(n = n()) # am gear n # 0 3 15 # 0 4 4 # 1 4 8 # 1 5 5 สิ่งที่ฉันต้องการบรรลุ: am gear n rel.freq 0 …
153 r  group-by  dplyr  frequency 

9
เลือกแถวแรกและแถวสุดท้ายจากข้อมูลที่จัดกลุ่ม
คำถาม การใช้dplyrวิธีการที่ฉันจะเลือกด้านบนและด้านล่างสังเกต / แถวของข้อมูลในงบจัดกลุ่มหนึ่ง? ข้อมูลและตัวอย่าง กำหนดกรอบข้อมูล df <- data.frame(id=c(1,1,1,2,2,2,3,3,3), stopId=c("a","b","c","a","b","c","a","b","c"), stopSequence=c(1,2,3,3,1,4,3,1,2)) ฉันสามารถรับการสังเกตด้านบนและด้านล่างจากแต่ละกลุ่มโดยใช้sliceแต่ใช้สถิติแยกกันสองแบบ: firstStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(1) %>% ungroup lastStop <- df %>% group_by(id) %>% arrange(stopSequence) %>% slice(n()) %>% ungroup ฉันสามารถรวมสถิติทั้งสองนี้เป็นหนึ่งเดียวเพื่อเลือกการสังเกตทั้งด้านบนและด้านล่างได้หรือไม่?
140 r  dplyr 


6
การใช้ฟังก์ชันกับทุกแถวของตารางโดยใช้ dplyr?
เมื่อทำงานกับplyrฉันมักจะพบว่าการใช้adplyฟังก์ชันสเกลาร์มีประโยชน์ที่ฉันต้องใช้กับแต่ละแถว เช่น data(iris) library(plyr) head( adply(iris, 1, transform , Max.Len= max(Sepal.Length,Petal.Length)) ) Sepal.Length Sepal.Width Petal.Length Petal.Width Species Max.Len 1 5.1 3.5 1.4 0.2 setosa 5.1 2 4.9 3.0 1.4 0.2 setosa 4.9 3 4.7 3.2 1.3 0.2 setosa 4.7 4 4.6 3.1 1.5 0.2 setosa 4.6 5 5.0 3.6 1.4 …
121 r  plyr  dplyr 

4
ฟังก์ชัน%>% หมายถึงอะไรใน R?
ฉันได้เห็นการใช้งานของ%>%(สูงกว่าร้อยละร้อยละ) ฟังก์ชั่นในแพคเกจบางอย่างเช่นdplyrและrvest หมายความว่าอย่างไร? เป็นวิธีเขียนปิดบล็อคใน R หรือไม่?
120 r  syntax  dplyr  magrittr  r-faq 

6
แทนที่ "เปลี่ยนชื่อ" ใน dplyr
renameผมชอบฟังก์ชั่นการเปลี่ยนชื่อของ plyr ฉันเพิ่งเริ่มใช้ dplyr และสงสัยว่ามีวิธีง่ายๆในการเปลี่ยนชื่อตัวแปรโดยใช้ฟังก์ชันจาก dplyr ที่ใช้งานง่ายเหมือนกับ plyr renameหรือไม่?
118 r  rename  dplyr 

1
วิธีตีความข้อความ dplyr `สรุป ()` การจัดกลุ่มผลลัพธ์ใหม่โดย 'x' (แทนที่ด้วยอาร์กิวเมนต์ ".groups`)
ฉันเริ่มได้รับข้อความใหม่ (ดูหัวข้อโพสต์) เมื่อเรียกใช้ group_by และสรุป () หลังจากอัปเดตเป็น dplyr เวอร์ชันพัฒนา 0.8.99.9003 นี่คือตัวอย่างในการสร้างเอาต์พุตใหม่: library(tidyverse) library(hablar) df <- read_csv("year, week, rat_house_females, rat_house_males, mouse_wild_females, mouse_wild_males 2018,10,1,1,1,1 2018,10,1,1,1,1 2018,11,2,2,2,2 2018,11,2,2,2,2 2019,10,3,3,3,3 2019,10,3,3,3,3 2019,11,4,4,4,4 2019,11,4,4,4,4") %>% convert(chr(year,week)) %>% mutate(total_rodents = rowSums(select_if(., is.numeric))) %>% convert(num(year,week)) %>% group_by(year,week) %>% summarise(average = mean(total_rodents)) การเอียงเอาต์พุตถูกต้อง แต่ข้อความนี้ปรากฏขึ้น: summarise()การจัดกลุ่มผลลัพธ์ใหม่ตาม 'ปี' (แทนที่ด้วย.groupsอาร์กิวเมนต์) ควรตีความอย่างไร? …
115 r  dplyr  summarize 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.