debugging 如何在R中更改代码以防止编织时出现df错误

oyt4ldly  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(110)

在R中,我想创建一个条形图,从中挑选出12种最常见的鸟类,并在条形图中说明每个物种和日历周的观察次数。data_artportal有30列,因此我需要从“artnamn”列和“startdatum”(开始日期)列中提取数据。
这是我的数据:
https://www.dropbox.com/s/sj1jrd6qiigdwe4/artportalen.csv?dl=0
下面是我的代码:

library(lubridate)
library(dplyr)
library(ggplot2)
library(forcats)

df %>%
  filter(artnamn %in% top12) %>%
  select(id, artnamn, startdatum) %>%
  mutate(startdatum = as.Date(startdatum, format = "%Y-%m-%d"),
         week.no = isoweek(startdatum)) %>%
  group_by(artnamn, week.no) %>%
  summarise(n = n()) %>%
  ungroup %>%
  mutate(week.fct = ifelse(week.no == 52, -1, week.no),
         week.order = fct_reorder(as.factor(week.no), week.fct)) %>%
  ggplot(aes(week.order, n, fill = artnamn)) +
  geom_col(position = "stack") + facet_wrap(.~artnamn)

字符串
当我通过点击“Knit”运行整个代码时,输出应该是一个Github文档,它给了我错误:

Error in `filter()`:
ℹ In argument: `Artnamn %in% top12`.
Caused by error:
! object 'top12' not found
Backtrace:
  1. ... %>% ggplot(aes(week.order, n, fill = Artnamn))
 16. Artnamn %in% top12
Execution halted


在阅读了关于同一主题的各种论坛后,我将此代码添加到上面的代码中:

adult <- read.csv2('artportalen.csv')
df <- read.csv("artportalen.csv", stringsAsFactors = FALSE)
df <- read.csv("artportalen.csv")


然而,我仍然得到同样的错误。我该怎么办?

ggazkfy8

ggazkfy81#

从你的问题/代码不清楚,你是如何计算top12。错误:

Error in `filter()`:
ℹ In argument: `Artnamn %in% top12`.
Caused by error:
! object 'top12' not found

字符串
告诉我们,top12(在filter中使用)未定义

df %>%
  filter(artnamn %in% top12) %>%


我的尝试:

library(dplyr)
library(ggplot2)
library(forcats)

df <- read.csv(file = "/home/sapi/Downloads/artportalen.csv")


让我们将top12定义为12个最常见的Artnamn

top12 <- df |>
  group_by(Artnamn) |>
  count() |>
  arrange(desc(n)) |>
  head(12) |>
  ungroup() |>
  subset(select = -n) |>
  as.list()


您的定义可能有点不同,但您必须在过滤之前将其包含在工作簿块中。
最后是你的代码:

df |>
  filter(Artnamn %in% top12[[1]]) |>
  select(Id, Artnamn, Startdatum) |>
  mutate(startdatum = as.Date(Startdatum, format = "%Y-%m-%d"),
         week.no = lubridate::isoweek(Startdatum)) |>
  group_by(Artnamn, week.no) |>
  summarise(n = n()) |>
  ungroup() |>
  mutate(week.fct = ifelse(week.no == 52, -1, week.no),
         week.order = fct_reorder(as.factor(week.no), week.fct)) |>
  ggplot(aes(week.order, n, fill = Artnamn)) +
  geom_col(position = "stack") + facet_wrap(.~Artnamn)


x1c 0d1x的数据
创建于2023-07-01使用reprex v2.0.2

相关问题