我有一個 4 列的資料框,結構如下:
Abundance DayNight peak Family
1 2 Day Peak Pangasiidae
2 1 Night Non-Peak Cyprinidae
3 1 Day Peak Botiidae
4 1 Night Non-Peak Botiidae
5 1 Day Peak Botiidae
6 4 Night Peak Cyprinidae
我要做的是堆疊資料,以便“家庭”列中的名稱成為列名,并且“豐富”中的相應值與其相應的家族名稱一起堆疊在列中。'peak' 和 'DayNight' 列需要與其對應的 'Abundance' 值堆疊。我已經找到了一種方法來做到這一點? 75% 的方式,但它通過峰值添加每個家庭中的所有 Abundance 值和晝夜因子水平。
這是我擁有的代碼和它給我的輸出:
fish_t<- dcast(fish_com, peak DayNight ~ Family, value.var="Abundance")
和輸出:
peak DayNight Ambassidae Anabantidae Ariidae Bagridae Belonidae Botiidae Butidae Channidae Cichlidae Clariidae Clupeidae Cobitidae Cynoglossidae Cyprinidae Danionidae
1 Non-Peak Day 21 1 1 14 3 29 1 0 1 0 23 16 16 236 15
2 Non-Peak Night 16 0 0 9 2 28 0 1 0 0 16 13 12 157 14
3 Peak Day 9 2 0 3 2 64 0 0 0 1 46 16 14 304 15
4 Peak Night 12 0 0 4 0 35 0 0 0 0 31 10 17 201 18
我只需要將原始資料框堆疊起來,而不需要將它與“Peak”和“DayNight”的 4 種組合相加。
這是具有更多行的 reprex 結構。
structure(list(Abundance = c(2L, 1L, 1L, 1L, 1L, 4L, 4L, 1L,
1L, 6L, 3L, 14L, 81L, 90L, 4L, 2L, 1L, 1L, 32L, 1L, 1L, 16L,
4L, 15L, 50L), DayNight = c("Day", "Day", "Day", "Day", "Day",
"Day", "Day", "Day", "Day", "Day", "Day", "Day", "Day", "Day",
"Day", "Day", "Day", "Day", "Day", "Day", "Day", "Day", "Day",
"Day", "Day"), peak = c("Peak", "Peak", "Peak", "Peak", "Peak",
"Peak", "Peak", "Peak", "Peak", "Peak", "Peak", "Peak", "Peak",
"Peak", "Peak", "Peak", "Peak", "Peak", "Peak", "Peak", "Peak",
"Peak", "Peak", "Peak", "Peak"), Family = c("Pangasiidae", "Cyprinidae",
"Botiidae", "Botiidae", "Botiidae", "Cyprinidae", "Cyprinidae",
"Pangasiidae", "Siluridae", "Engraulidae", "Ambassidae", "Cyprinidae",
"Xenocyprididae", "Cyprinidae", "Sciaenidae", "Polynemidae",
"Serrasalmidae", "Gyrinocheilidae", "Cobitidae", "Danionidae",
"Siluridae", "Clupeidae", "Cynoglossidae", "Clupeidae", "Cyprinidae"
)), row.names = c(NA, 25L), class = "data.frame")
uj5u.com熱心網友回復:
我不確定您的預期輸出,但您可以嘗試
library(tidyverse)
df %>%
group_by(DayNight, peak) %>%
rownames_to_column() %>%
pivot_wider(names_from = Family, values_from = Abundance) %>%
select(-rowname)
DayNight peak Pangasiidae Cyprinidae Botiidae Siluridae Engraulidae Ambassidae Xenocyprididae
<chr> <chr> <int> <int> <int> <int> <int> <int> <int>
1 Day Peak 2 NA NA NA NA NA NA
2 Day Peak NA 1 NA NA NA NA NA
3 Day Peak NA NA 1 NA NA NA NA
4 Day Peak NA NA 1 NA NA NA NA
5 Day Peak NA NA 1 NA NA NA NA
6 Day Peak NA 4 NA NA NA NA NA
7 Day Peak NA 4 NA NA NA NA NA
8 Day Peak 1 NA NA NA NA NA NA
9 Day Peak NA NA NA 1 NA NA NA
10 Day Peak NA NA NA NA 6 NA NA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/524533.html
上一篇:通過洗掉R列中的NA來減少資料幀
