【问题标题】:Sum duplicate columns with pivot_wider()使用 pivot_wider() 对重复列求和
【发布时间】:2020-07-12 19:34:12
【问题描述】:

我目前有一个看起来像这样的“长”数据框:

# Phylum          Sample  Abundance
# Other           A1      17
# Other           A2      0
# Actinobacteria  A3      123
# Actinobacteria  B1      651
# Other           B2      22
# Actinobacteria  B3      844
# Firmicutes      A1      403
# Other           A2      42
# Firmicutes      A3      225
# Other           B1      16
# Other           B2      19
# Firmicutes      B3      556

我的目标是让它看起来像这样,其中数据被旋转到宽,但重复的值被求和(例如 Other/A2 和 Other/B2):

# Phylum          A1    A2    A3    B1    B2    B3
# Actinobacteria  0     0     123   651   0     844
# Firmicutes      403   0     225   0     0     556
# Other           17    71    0     16    41    0

到目前为止我已经尝试过

newdata <- olddata %>% pivot_wider(names_from="Sample",values_from="Abundance",values_fill=0,values_fn=sum)

但这会给出错误Error in values_fn[[value]] : object of type 'builtin' is not subsettable。我试过在这个网站上寻找其他地方,但大多数人建议使用唯一的行名,这在我的情况下不是一个选项。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 我相信你有旧版本的tidyr。尝试安装最新版本,错误应该消失了。

标签: r shiny


【解决方案1】:

错误无法重现,但最好将values_fillvalues_fn放在list

library(tidyr)
library(dplyr)
olddata %>%        
    pivot_wider(names_from= Sample ,values_from= Abundance,
       values_fill=list(Abundance = 0),values_fn= list(Abundance = sum))
# A tibble: 3 x 7
#  Phylum            A1    A2    A3    B1    B2    B3
#  <chr>          <int> <int> <int> <int> <int> <int>
#1 Other             17    42     0    16    41     0
#2 Actinobacteria     0     0   123   651     0   844
#3 Firmicutes       403     0   225     0     0   556

数据

olddata <- structure(list(Phylum = c("Other", "Other", "Actinobacteria", 
"Actinobacteria", "Other", "Actinobacteria", "Firmicutes", "Other", 
"Firmicutes", "Other", "Other", "Firmicutes"), Sample = c("A1", 
"A2", "A3", "B1", "B2", "B3", "A1", "A2", "A3", "B1", "B2", "B3"
), Abundance = c(17L, 0L, 123L, 651L, 22L, 844L, 403L, 42L, 225L, 
16L, 19L, 556L)), class = "data.frame", row.names = c(NA, -12L
))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 2020-12-06
    • 2021-04-14
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2021-02-28
    相关资源
    最近更新 更多