gpt4 book ai didi

r - 聚合方法以不同方式处理缺失值 (NA)

转载 作者:行者123 更新时间:2023-12-03 07:10:11 25 4
gpt4 key购买 nike

这是一个缺少值的简单数据框:

M = data.frame( Name = c('name', 'name'), Col1 = c(NA, 1) , Col2 = c(1, 1))
# Name Col1 Col2
# 1 name NA 1
# 2 name 1 1

当我使用公式方法按组(“名称”)使用聚合对变量进行求和时:

聚合(.~名称, M, FUN = sum, na.rm = TRUE)

结果是:

# RowName Col1 Col2
# name 1 1

因此,具有 NA 的整个第一行将被忽略。但如果使用“非公式”规范:

聚合(M[, 2:3], by = list(M$Name), FUN = sum, na.rm = TRUE)

结果是:

# Group.1 Col1 Col2
# name 1 2

此处仅忽略 (1,1) 条目。

这在我的一个代码中引起了严重的调试头痛,因为我认为这两个调用是等效的。 formula 输入方法受到不同对待是否有充分的理由?

最佳答案

好问题,但在我看来,这不应该引起主要调试问题,因为它在aggregate手册页的多个地方都有非常清楚的记录。

首先,在使用部分:

## S3 method for class 'formula'
aggregate(formula, data, FUN, ...,
subset, na.action = na.omit)

稍后,在描述中:

na.action: a function which indicates what should happen when the data contain NA values. The default is to ignore missing values in the given variables.

<小时/>

我无法回答为什么公式模式的编写方式不同——这是函数作者必须回答的问题——但使用上述信息,您可能可以使用以下内容:

aggregate(.~Name, M, FUN=sum, na.rm=TRUE, na.action=NULL)
# Name Col1 Col2
# 1 name 1 2

关于r - 聚合方法以不同方式处理缺失值 (NA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com