繁体   English   中英

尝试在 R 中使用 dplyr 使用 group_by 和汇总函数时出错

[英]Error in trying to use the group_by and summarise functions with dplyr in R

我一直在尝试使用dplyr中的 dplyr 来总结一组数据。 这是我一直在使用的代码,直到最近它一直运行良好。

library(tidverse);library(curl)
data<-read.csv(curl("https://raw.githubusercontent.com/megaraptor1/mydata/main/data.csv"))
data2<-data %>%
  group_by(e.taxon) %>%
  summarise(across(c(e.hbl,e.bm), weighted.mean, e.N), 
            N = sum(e.N))

“错误: summarise()输入..1的问题。x 'x' 和 'w' 必须具有相同的长度 i 输入..1(function (.cols = everything(), .fns = NULL, ..., .names = NULL)... i 组 2 中发生错误:e.taxon = "Abrocoma_bennettii"。"

现在我知道了此错误的所谓原因:其中两列的长度不同或缺少值。 但是,当我检查哪些列产生错误时,它表示所有变量都具有相同数量的条目(即,没有丢失数据)。

length(data$e.taxon)
length(data$e.hbl)
length(data$e.bm)
length(data$e.N)

我尝试搜索此错误消息以查看其背后是否有更多我可以使用的信息,但我找不到任何东西。 真正奇怪的是,这段代码在一些未知的更改之前运行良好,并且由于文件的设置方式,我无法轻松识别可能产生这种情况的新更改的位置(该示例是更大共享数据集的一部分)。 我试图弄清楚为什么 R 在所有数据都有完整案例时返回此错误。

它适用于新版本的dplyr1.0.6R 4.1.0上测试)

library(dplyr)
data %>%
   group_by(e.taxon) %>%
   summarise(across(c(e.hbl,e.bm), weighted.mean, e.N), N = sum(e.N))
# A tibble: 2,004 x 4
   e.taxon               e.hbl    e.bm     N
   <chr>                 <dbl>   <dbl> <int>
 1 Abrawayomys_ruschii   126.     54.7     3
 2 Abrocoma_bennettii    190.    200       9
 3 Abrocoma_cinerea      149.     86.3     5
 4 Abrothrix_andinus      83.7    16.7    34
 5 Abrothrix_illuteus    121.     42      11
 6 Abrothrix_longipilis  105.     32.3    62
 7 Abrothrix_olivaceus    87.0    19.4    45
 8 Acinonyx_jubatus     1278.  52163.      7
 9 Acomys_cahirinus      105      41.1     2
10 Acomys_sp.             98.5    67       2
# … with 1,994 more rows

由于我们传递的是 arguments 而不是 lambda function,因此使用名称可能会更好,即w w = eN (尽管在这里作为第二个参数并不重要)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM