11

我有一个 csv 文件,如下所示,我使用 read.csv 读入 R,其中 C 列有 12/30 个空值。我想计算出每列的最大值,但是在列 C 上使用 R 函数“max”时返回“NA”。如何让 R 忽略空/NA 值,我看不到“rm.na”在 read.csv 中?

data<-data.frame(read.csv("test.csv"))

data

A   B   C   
1   5   6
15  2   3
8   3   3
7   5   4
5   3   8
4   1   4
5   3   4
2   2   10
4   3   8
6   5   2
1   4   4
10  8   4
0   6   0
7   3   8
5   3   3
13  12  13
6   0   0
0   0   2
5   2   NA
7   3   NA
1   8   NA
11  1   NA
1   4   NA
0   7   NA
4   5   NA
3   10  NA
2   0   NA
6   4   NA
0   19  NA
1   5   NA

> max(C)
[1] NA
4

4 回答 4

15
    data<-na.omit(data)

然后

    max(data)

如果您不想更改数据框,那么

    max(na.omit(data))
于 2013-11-12T09:06:01.240 回答
9

你有两个我能想到的选择

 apply(data,2,max,na.rm=TRUE); # this will remove the NA's from columns that contain them

或者

apply(na.omit(data),2,max); ## this will remove the NA rows from the data frame and then calculate the max values
于 2013-04-04T10:48:08.930 回答
1

我建议像其他人建议的那样在阅读后删除 NA 。但是,如果您坚持只读取非 NA 行,您可以使用 bash 工具 linux 删除它们并创建一个新文件:

grep -Ev file_with_NA.csv NA > file_without_NA.csv

如果你运行 linux 或 mac,你已经有了这个工具。在 Windows 上,您必须安装 MinGW 或 Cygwin 才能获得这些工具。

于 2013-04-04T10:50:48.203 回答
1

你应该可以使用

max(x,na.rm=TRUE)
于 2015-12-21T14:23:41.677 回答