ฉันมีดาต้าเฟรมต่อไปนี้:
location asset_status count row
<chr> <chr> <dbl> <int>
1 location1 Owned 1 1
2 location1 Available 1 2
3 location1 Owned 1 3
4 location2 Owned 1 4
5 location2 Owned 1 5
6 location2 Owned 1 6
7 location2 Owned 1 7
8 location2 no status 1 8
9 location3 Owned 1 9
10 location3 Owned 1 10
เมื่อฉันพยายามแพร่กระจายโดยใช้สิ่งนี้ ฉันได้รับข้อผิดพลาดต่อไปนี้:
df <- head(us_can_laptops,10) %>%
select(location,asset_status,count) %>%
#mutate(row = row_number()) %>% #excluded
group_by(location) %>%
spread(asset_status,count)
Error: Duplicate identifiers for rows (4, 5, 6, 7), (1, 3)
ดังนั้นตามคำถามอื่น ๆ ที่เกี่ยวข้องกับสิ่งนี้ใน SO ฉันได้เพิ่มตัวระบุเฉพาะด้วยการกลายพันธุ์:
df <- head(us_can_laptops,10) %>%
select(location,asset_status,count) %>%
mutate(row = row_number()) %>%
group_by(location) %>%
spread(asset_status,count)
แต่นั่นส่งคืนสิ่งนี้:
location row Available `no status` Owned
* <chr> <int> <dbl> <dbl> <dbl>
1 location2 4 NA NA 1
2 location2 5 NA NA 1
3 location2 6 NA NA 1
4 location2 7 NA NA 1
5 location2 8 NA 1 NA
6 location3 10 NA NA 1
7 location3 9 NA NA 1
8 location1 1 NA NA 1
9 location1 2 1 NA NA
10 location1 3 NA NA 1
นอกจากนี้ เมื่อใดก็ตามที่ฉันลองโทรสรุป มันจะทำลายการแพร่กระจายของฉัน
นี่คือผลลัพธ์ที่ต้องการ:
location Available `no status` Owned
* <chr> <dbl> <dbl> <dbl>
1 location1 1 NA 2
2 location2 NA 1 4
3 location3 NA NA 2
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ฉันรู้ว่านี่ดูเหมือนซ้ำกัน แต่คำตอบของคำถามที่เชื่อมโยงต่อไปนี้ยังคงไม่สามารถแก้ไขปัญหาสำหรับฉัน: ข้อผิดพลาดของฟังก์ชันการแพร่กระจาย: ตัวระบุซ้ำสำหรับแถว [ซ้ำกัน] กระจายด้วยตัวระบุที่ซ้ำกันสำหรับแถว 1
ฉันกำลังมองหาวิธีแก้ปัญหาขณะใช้ dplyr ไม่ใช่ dcast