以下に示すcsvファイルがあり、read.csvを使用してRに読み取りました。ここで、列Cには12/30の空の値があります。各列の最大値を計算したいのですが、R関数「max」が列Cで使用されると「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
あなたは私が考えることができる2つのオプションがあります
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
data<-na.omit(data)
その後
max(data)
データフレームを変更したくない場合は、
max(na.omit(data))
他の人が示唆したように読んだ後、NAを削除することをお勧めします。ただし、NA以外の行のみの読み取りを要求する場合は、bashツールlinuxを使用してそれらを削除し、新しいファイルを作成できます。
grep -Ev file_with_NA.csv NA > file_without_NA.csv
LinuxまたはMacを実行している場合は、すでにこのツールを使用しています。 Windowsでは、ツールを入手するためにMinGWまたはCygwinをインストールする必要があります。
使えるはず
max(x,na.rm=TRUE)