R-Expand.grid+;合并丢失因子级别顺序

R-Expand.grid+;合并丢失因子级别顺序,r,R,以下问题发生在一个闪亮的应用程序中,所涉及的数据是几个子集和修改的产物。因此,很难获得可复制的数据集来添加到此请求中(我无法在我的数据块中设置dput()。我的请求似乎是一个逻辑问题,因此我将首先尝试,而不添加数据 我有一个带有3列的DF0: 年份:因素, SP:因素, IA:数字 我将其细分为SP级别,称为DF1,但在这个过程中会降低一些年份的级别 我的代码使用expand.grid在子集中查找未使用的年份级别,然后将缺少的空行合并到子集中。目的是将“0”设置为缺失年份的IA值,并具有完整的时

以下问题发生在一个闪亮的应用程序中,所涉及的数据是几个子集和修改的产物。因此,很难获得可复制的数据集来添加到此请求中(我无法在我的数据块中设置dput()。我的请求似乎是一个逻辑问题,因此我将首先尝试,而不添加数据

我有一个带有3列的DF0: 年份:因素, SP:因素, IA:数字

我将其细分为SP级别,称为DF1,但在这个过程中会降低一些年份的级别

我的代码使用expand.grid在子集中查找未使用的年份级别,然后将缺少的空行合并到子集中。目的是将“0”设置为缺失年份的IA值,并具有完整的时间序列。我通过请求原始数据集DF来获得一年中的所有级别

AGG<-reactive({
  DF2 <- with(DF1(), expand.grid(YEAR = levels(DF()$YEAR),SP = levels(DF0()$SP)))
  DF2 <- merge(DF1(), DF2,by=c("YEAR", "SP"), all = TRUE)
  DF2$IA[is.na(DF2$IA)] <- 0
  DF2<-data.table(DF2)
})
DF2:

我尝试在多篇SO文章之后使用order()和sort()对DF2$YEAR进行重新排序,但没有一篇文章对此有影响。应用程序中会自动找到年份级别,因此我无法手动设置订单

我最后的情节没有任何意义!!(所有0年均已恢复)


我应该如何恢复(或从不放松)我的因子顺序?

您可以通过手动设置因子级别的顺序

DF2$YEAR <- factor(DF2$YEAR, levels = c("2001", "2002", ...))

DF2$YEAR您可以通过

DF2$YEAR <- factor(DF2$YEAR, levels = c("2001", "2002", ...))

DF2$YEAR您可以通过
DF2$YEAR手动设置因子级别的顺序非常感谢,您的第二个解决方案成功了!我将保留此提示,以便进一步合并@DrDom然后将此作为答案传递。您可以通过
DF2$YEAR手动设置因子级别的顺序。非常感谢,您的第二个解决方案成功了!我将保留此提示,以便进一步合并@DrDom然后将其作为答案传递
YEAR     SP  IA
2006     Aglais io (Linnaeus, 1758)  82.32
2007     Aglais io (Linnaeus, 1758)  78.79
2008     Aglais io (Linnaeus, 1758)  79.29
2009     Aglais io (Linnaeus, 1758)  135.35
2010     Aglais io (Linnaeus, 1758)  81.82
2014     Aglais io (Linnaeus, 1758)  51.26
2001     Aglais io (Linnaeus, 1758)  0.00
2002     Aglais io (Linnaeus, 1758)  0.00
2003     Aglais io (Linnaeus, 1758)  0.00
2004     Aglais io (Linnaeus, 1758)  0.00
2005     Aglais io (Linnaeus, 1758)  0.00
2011     Aglais io (Linnaeus, 1758)  0.00
2012     Aglais io (Linnaeus, 1758)  0.00
2013     Aglais io (Linnaeus, 1758)  0.00

levels(DF) (original)
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
levels(DF1) (subset)
2006 2007 2008 2009 2010 2014
levels(DF2) (recovered)
2006 2007 2008 2009 2010 2014 2001 2002 2003 2004 2005 2011 2012 2013
DF2$YEAR <- factor(DF2$YEAR, levels = c("2001", "2002", ...))
DF2$YEAR <- factor(DF2$YEAR, levels = sort(as.integer(as.character(DF2$YEAR))))