如何从数据框中删除NA,以便在数据框上使用sapply [复制]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个数据框:

            colA           colB
1           15.3           1.76
2           10.8           1.34
3            8.1           1.27
4           19.5           1.47
5            7.2           1.27
6            5.3           1.49
7            9.3           1.31
8           11.1           1.09
9            7.5           1.18
10          12.2           1.22
11           6.7           1.25
12           5.2           1.19
13          19.0           1.95
14          15.1           1.28
15           6.7           1.52
16           8.6             NA
17           4.2           1.12
18          10.3           1.37
19          12.5           1.19
20          16.1           1.05
21          13.3           1.32
22           4.9           1.03
23           8.8           1.12
24           9.5           1.70

我怎样才能删除/更改所有NAs的值,这样当我使用sapply(即sapply(x, mean))时,我在colA的情况下采用24行的平均值,在colB采用23列的平均值?

我知道数据帧必须具有相同的行数,因此使用像na.omit()这样的东西是行不通的,因为它会删除,在这种情况下,第16行;当我计算colA的平均值时,我会丢失一行数据。

谢谢!

r na sapply
1个回答
0
投票

你应该能够通过na.rm = TRUE并获得平均值。

例:

df <- data.frame(A = 1:3, B = c(NA, 1, 2))
apply(df, 2, mean, na.rm = TRUE)

#   A   B 
# 2.0 1.5 
© www.soinside.com 2019 - 2024. All rights reserved.