我有一个数据框,其中包含以下列:Entity
、Customer Class
、Month
和其他
|CClass |Entity |Month| Sales volume|
|-------|--------|-----|-------------|
|Bakery | 1 | 1 |100 |
|Bakery | 1 | 2 |106 |
|Bakery | 1 | 3 |103 |
|Bakery | 1 | 5 |135 |
|Bakery | 1 | 6 |121 |
|Bakery | 1 | 7 |176 |
|Bakery | 1 | 10 |133 |
|Bakery | 1 | 11 |100 |
|Bakery | 1 | 12 |112 |
|Bakery | 2 | 1 |136 |
|Bakery | 2 | 3 |123 |
|Bakery | 2 | 4 |108 |
|Bakery | 2 | 5 |101 |
|Bakery | 2 | 7 |105 |
|Bakery | 3 | 10 |103 |
|Bakery | 3 | 11 |106 |
|Bakery | 3 | 12 |110 |
|Grocery| 1 | 1 |120 |
|Grocery| 1 | 2 |150 |
当我尝试使用complete()函数将缺失的Month
填充到每个Customer Class
时:
DF <- complete(DF,nesting(Entity
,CClass
),Month
)
我收到错误消息“!未找到对象“实体”
st <- complete(ST,nesting(Entity,CClass),SBMONTH)dplyr::summarise()
中的错误:!计算..1 = complete(data = dplyr::cur_data(), ..., fill = fill, explicit = explicit)
时出错。i组1中发生错误:CClass =“Bagel Shop”,End Market =“Food Service”,Entity = 1。由错误引起:!object 'Entity'找不到运行rlang::last_error()
查看错误发生的位置。
但是对于测试样本,此功能有效。请指教
2条答案
按热度按时间k5hmc34c1#
我无法重现错误。从一个新的R会话开始并使用以下数据:
我加载
tidyr
并运行问题中的complete
命令,得到了合理的输出:一些建议:确保你使用的是
tidyr::complete
,如果你加载了另一个包,其中有一个complete
函数可能会屏蔽正确的版本。您可以检查conflicts()
并查看是否列出了complete
,如果列出了,则指定tidyr::complete
以获得正确的版本。还要检查names(DF)
,确保列名与您所认为的完全一致--没有多余的空格,大写正确,等等。还要检查class(DF)
并确保它是data.frame
或tbl_df
,也许还可以查看str(DF)
以确保列是适当的类。由于您没有使用dput()
来共享数据,因此我们无法确定数据或列的类。如果您仍然有问题,请尝试找到重现问题的数据样本,并请使用
dput
共享。zu0ti5jz2#
你确信你的
DF
对象类是data.frame
或data.table
吗?因为我在一个tbl
对象上得到了同样的错误,它返回了同样的错误(虽然我使用了expand
函数,但我认为这是同一个问题)。此外,我尝试使用您的代码复制您的错误,首先创建一个data.frame
:DF <-数据。框架(CClass=c(rep(“Bakery”,17),rep(“杂货店”,2)),实体=c(1,1,1,1,1,1,1,1,2,2,2,3,3,1,1),月=c(1,2,3,5,6,7,10,11,12,1,3,4,5,7,10,11,12,1,2),
Sales volume
=c(100,106,103,135,121,176,133,100,112,136,123,108,101,105,103,106,110,120,150))然后运行命令(
DF <- complete(DF, nesting(Entity, CClass), Month)
)。这是输出DF
A tibble:40 × 4实体CClass Month Sales.volume 1 1面包店1 100 2 1面包店2 106 3 1面包店3
103 4 1面包店4 NA 5 1面包店5
135 6 1面包店6 121 7 1面包店7
176 8 1面包店10 133 9 1面包店11
100 10 1 Bakery 12 112...使用
print(n = ...)
查看更多行希望这是有用的。朱塞佩