【问题标题】:Factor function in R returning NAsR中的因子函数返回NA
【发布时间】:2020-07-05 07:29:18
【问题描述】:

我有一个数据框,其中有一列“月”和协调值。当我创建图表时,月份按字母顺序排列。我想使用因子函数对月份进行排序,但现在我的图表只显示了 5 月份和“NAs”。

xnames<-c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Data$Month<-factor(Data$Month, levels = xnames)
ggplot(DAtaTidy_MergeRWPeaks2, (aes(x=factor(Month, xnames), y=Volume)), na.rm=TRUE) + 
    geom_bar() 

我尝试将因子嵌入到 ggplot 函数中,但它产生了相同的结果。当我从“xnames”中删除“May”时,图表只显示 NA。

【问题讨论】:

  • 你能不能显示DAtaTidy_MergeRWPeaks2
  • 可能是Data$Month的值与levels不匹配

标签: r ggplot2 dplyr rstudio levels


【解决方案1】:

我们看不到您的数据,但该行为表明Data$Month 包含一个未包含在您的级别术语xnames 中的值。有什么拼写错误吗?我建议你比较 levels(as.factor(Data$Month))xnames - 它肯定会告诉你问题。

显示您遇到的相同问题的示例数据集:

yums <- c('soup', 'salad', 'bread')
nums <- c(10, 14, 5)
df1 <- data.frame(yums, nums)

yum.levels <- c('soup', 'salad', 'bread', 'pasta')
ggplot(df1, aes(x=factor(yums, yum.levels), y=nums)) + geom_col()

这给了你这个:

...但是如果我们拼错其中一个(例如在yums 中将“Soup”大写),您会得到:

yums1 <- c('Soup', 'salad', 'bread')
nums <- c(10, 14, 5)
df2 <- data.frame(yums1, nums)

yum.levels <- c('soup', 'salad', 'bread', 'pasta')
ggplot(df2, aes(x=factor(yums1, yum.levels), y=nums)) + geom_col()

【讨论】:

  • 是的....我完全忽略了我的月份在数据集中被拼写了出来。哎呀!非常感谢。
  • 发生在我们所有人身上......然后我们看到并不能真正帮助我们确定解决方案的错误消息,所以我们必须去 stackoverflow :)
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 2013-06-11
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 2021-11-26
  • 2016-10-08
相关资源
最近更新 更多