gpt4 book ai didi

如果列中的 NA 数大于 3,则删除数据框的行

转载 作者:行者123 更新时间:2023-12-02 08:33:40 24 4
gpt4 key购买 nike

我有一个数据框(面板数据):Ctry 列表示我的数据框中的国家名称。在任何列(例如:Carx)如果 NA 的数量大于 3;我想在我的数据知名度中删除相关国家。例如,

  • A国有2个NA
  • B 国有 4 个 NA
  • C 国有 3 个 NA

我想在我的数据框中删除国家 B。我有一个这样的数据框(这是为了说明,我的数据框实际上非常大):

  Ctry  year   Carx
A 2000 23
A 2001 18
A 2002 20
A 2003 NA
A 2004 24
A 2005 18
B 2000 NA
B 2001 NA
B 2002 NA
B 2003 NA
B 2004 18
B 2005 16
C 2000 NA
C 2001 NA
C 2002 24
C 2003 21
C 2004 NA
C 2005 24

我想创建一个这样的数据框:

  Ctry  year   Carx
A 2000 23
A 2001 18
A 2002 20
A 2003 NA
A 2004 24
A 2005 18
C 2000 NA
C 2001 NA
C 2002 24
C 2003 21
C 2004 NA
C 2005 24

最佳答案

在 base R 中,一种相当直接的方法是使用 sum(is.na(.))ave 来进行计数,如下所示:

with(mydf, ave(Carx, Ctry, FUN = function(x) sum(is.na(x))))
# [1] 1 1 1 1 1 1 4 4 4 4 4 4 3 3 3 3 3 3

一旦有了它,子集化就很容易了:

mydf[with(mydf, ave(Carx, Ctry, FUN = function(x) sum(is.na(x)))) <= 3, ]
# Ctry year Carx
# 1 A 2000 23
# 2 A 2001 18
# 3 A 2002 20
# 4 A 2003 NA
# 5 A 2004 24
# 6 A 2005 18
# 13 C 2000 NA
# 14 C 2001 NA
# 15 C 2002 24
# 16 C 2003 21
# 17 C 2004 NA
# 18 C 2005 24

关于如果列中的 NA 数大于 3,则删除数据框的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23970281/

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