我有一个如下所示的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
答案 0 :(得分:13)
data<-na.omit(data)
然后
max(data)
如果您不想更改数据框,那么
max(na.omit(data))
答案 1 :(得分:9)
你有两个我能想到的选择
apply(data,2,max,na.rm=TRUE); # this will remove the NA's from columns that contain them
OR
apply(na.omit(data),2,max); ## this will remove the NA rows from the data frame and then calculate the max values
答案 2 :(得分:1)
我建议在阅读之后删除NA,就像其他人建议的那样。但是,如果您坚持只读取非NA行,则可以使用bash工具linux删除它们并创建新文件:
grep -Ev file_with_NA.csv NA > file_without_NA.csv
如果你运行linux或mac,你已经有了这个工具。在Windows上,您必须安装MinGW或Cygwin来获取工具。
答案 3 :(得分:-1)
你应该可以使用
max(x,na.rm=TRUE)