为什么mutate()命令创建NA?

我目前正在处理具有许多行的亚马逊数据集,这使得很难发现数据中的问题。 我的目标是查看亚马逊的数据,并查看某些产品的星级是否比其他产品高。我有一个指示产品ID(例如)的变量,一个指示星级(整体)的变量,并且想要创建一个差异变量。

因此,我将dplyr的group_by函数与mutate函数结合使用。即使所有输入变量都没有NA / Missings,我的输出变量却没有。我试图寻找一种解决方案,但仅在输入具有NA的情况下才找到解决方案。

见所附代码:

any(is.na(data$asin))
#[1] FALSE
any(is.na(data$overall))
# [1] FALSE

#create variable that represents variance of rating, grouped by product type
data <- data %>% 
  group_by(asin) %>% 
  mutate(ProductVariance = var(overall))

any(is.na(data$ProductVariance))
#5226 [1] TRUE
> sum(is.na(data$ProductVariance))
# [1] 289

非常感谢您的帮助!尽管就评论的数量而言,NA的数量并不多,但我仍然希望能使用准确的方法(NA阻碍了Tapply的使用),并在后续分析中尽可能地做到精确。

先感谢您!

评论
  • reum
    reum 回复

    Hi @Yvonne is it possible that what you're seeing is that "empty" groups are not showing up? You can change the default with .drop
    When .drop = TRUE, empty groups are dropped.