首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中的另一列中逐列叠加值

如何在R中的另一列中逐列叠加值
EN

Stack Overflow用户
提问于 2022-10-31 22:33:46
回答 1查看 28关注 0票数 0

我有一个4列的数据框架,结构如下:

代码语言:javascript
复制
     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因子水平来增加每个家族中的所有丰度值。

下面是我的代码和它给我的输出:

代码语言:javascript
复制
fish_t<- dcast(fish_com,  peak + DayNight ~ Family, value.var="Abundance")

以及产出:

代码语言:javascript
复制
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结构。

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-01 00:20:55

我不确定你的预期产出,但你可以试试

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74269737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档