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