【发布时间】:2013-02-21 02:26:41
【问题描述】:
我想对 R 中包含整数值和偶尔 NA 的数据帧中的列进行平均。
名为 CD6(气候分区 6)的数据框使用 NA 值进行初始化,以存储属于气候分区 6 的所有数据的平均值。行是日期,列代表从 0 到 23 的小时数。数据框看起来像这个:
> CD6
Date H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 ... H23
1948-07-01 NA NA NA NA NA NA NA NA NA NA NA ... NA
1948-07-02 NA NA NA NA NA NA NA NA NA NA NA ... NA
1948-07-03 NA NA NA NA NA NA NA NA NA NA NA ... NA
名为 CA 的数据框具有从 1 到 7 的所有气候分区的真实值。数据框如下所示:
> CA
Climate_Division Date H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 ... H23
6 1948-07-01 NA NA NA NA NA NA NA NA NA NA NA ... NA
5 1948-07-01 0 1 1 3 0 0 0 0 0 0 0 ... 2
6 1948-07-01 0 1 1 3 0 0 0 0 0 0 0 ... 2
6 1948-07-01 1 0 0 5 7 0 1 1 1 0 0 ... 0
6 1948-07-02 0 2 1 2 1 1 NA 0 1 0 1 ... 2
6 1948-07-03 NA NA NA NA NA NA NA NA NA NA NA ... NA
我有一个 for 循环编码,它将逐行遍历数据帧 CA,并映射到气候分区的正确数据帧(在此示例中,CD6 表示气候分区 6)。一个问题是我不知道每个气候部门有多少行来正确取其平均值。
通过仅查看 CD6,如果存在真实值并且最终答案是整数(值的上限),我想获得在特定时间忽略 NA 的每个日期的平均值。如果各个气候部门的所有时间的值都是 NA,我想保持它以反对 0。CD6 的最终结果应该是这样的
> CD6
Date H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 ... H23
1948-07-01 1 1 1 4 4 0 1 1 1 0 0 ... 1
1948-07-02 0 2 1 2 1 1 NA 0 1 0 1 ... 2
1948-07-03 NA NA NA NA NA NA NA NA NA NA NA ... NA
我不知道如何在编码和精通它时进行此操作。因此,任何建议都会有所帮助,并感谢您的宝贵时间。
【问题讨论】:
-
您能否将
dput(CA)的输出粘贴到此处以便我们重现您的数据? -
1 和 0 的平均值如何(对于 Climate_Division = 6 和 Date = 1948-07-01 )1?不应该是0.5吗?
-
geektrader - 你是对的,它应该是 0.5,但是我在取它的上限时放了 1,以保持整数。
标签: r matrix dataframe average