这个问题在这里已有答案:
我有一个数据框:
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
我怎样才能删除/更改所有NA
s的值,这样当我使用sapply
(即sapply(x, mean)
)时,我在colA
的情况下采用24行的平均值,在colB
采用23列的平均值?
我知道数据帧必须具有相同的行数,因此使用像na.omit()
这样的东西是行不通的,因为它会删除,在这种情况下,第16行;当我计算colA
的平均值时,我会丢失一行数据。
谢谢!
你应该能够通过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