【问题标题】:"Error: n() should only be called in a data context" when using group_by and summarize“错误:n() 只能在数据上下文中调用”当使用 group_by 和 summarise
【发布时间】:2020-03-13 04:57:46
【问题描述】:

我有一个家庭作业问题:“对于每个年龄范围,找出 30 天后重新入院的患者百分比,并在条形图中显示结果。”

我运行以下代码并得到“错误:n() 只能在数据上下文中调用”

cont_table_4<-diabetic_data%>%
  select(age, readmitted)%>%
  filter(readmitted==">30")%>%
  group_by(age)%>%
  summarize(count=n())%>%
  arrange(desc(count()))

我对问题使用了几乎完全相同的格式:“找出哪个子专业的再入院率最高。然后按种族打印该子专业的细分。”它工作得很好。我通过电子邮件向我的讲师发送了代码和错误的屏幕截图,她说问题出在 count() 函数调用上,即使错误涉及 n()。我真的不知道如何处理这些信息。我已经加载了 dplyr 和 plyr,卸载了它们中的每一个,然后只用其中一个再次尝试,我得到了相同的错误消息。我已经查找了许多关于此错误的问答,但找不到我要查找的内容。我是一名刚开始学习 R 的学生,感谢任何帮助!

【问题讨论】:

  • dput 显示您的数据子集,最后一行似乎是问题arrange(desc(count)) 而不是count()

标签: r count grouping summarize


【解决方案1】:

问题将是 count() 作为函数而不是在最后一行之前创建的“计数”列

library(dplyr)
diabetic_data%>%
  select(age, readmitted)%>%
  filter(readmitted==">30")%>%
  group_by(age)%>%
  summarize(count=n())%>%
  arrange(desc(count))

【讨论】:

  • 我不确定我是否理解。需要改变什么?
  • @LeighAnneRobinson 我仅根据您显示的代码回答。在您的代码中,最后一行是count(),它是一个函数,而不是summarise 步骤中的列。改为count
  • @LeighAnneRobinson 如果错误发生在arrange 步骤之前,可能是您在filter 步骤之后没有任何行。 diabetic_data%&gt;% select(age, readmitted)%&gt;% filter(readmitted=="&gt;30") 的输出是什么你得到任何行吗?
  • 我得到一个包含 2 个变量的 106,635 个观察值的表。只是每次给定的年龄范围都与 >30 相关联。我刚刚做了 cont_table_4$age[1] 它返回了 10-20 的年龄范围和所有年龄级别。我不确定我是否相信这是正确的答案。
  • @LeighAnneRobinson 正如我在 cmets 中提到的,请展示一个小的可重现示例和预期输出。它会让事情变得更快
猜你喜欢
  • 2023-03-06
  • 2018-12-24
  • 2022-11-15
  • 1970-01-01
  • 2017-03-21
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
相关资源
最近更新 更多