我有一个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我想要做的是把数据堆叠起来,这样“家族”列中的名字就变成了列名,相应的“富足”值用相应的姓氏堆放在列中。“峰值”和“DayNight”列需要与其相应的“丰度”值进行叠加,我已经找到了一种方法来实现这一方法--75%的方法,但它通过峰值和DayNight因子水平来增加每个家族中的所有丰度值。
下面是我的代码和它给我的输出:
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 我只需要得到原来的数据堆积,而不是它被相加的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")发布于 2022-11-01 00:20:55
我不确定你的预期产出,但你可以试试
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 NAhttps://stackoverflow.com/questions/74269737
复制相似问题