如何将 R 数据帧中的字符串转换为 NA?
我们常常发现数据收集流程中存在错误,而这些错误可能会造成研究结果不准确。当存在错误的数据收集时,分析师的工作会变得非常困难。说明数据错误的一种情况是得到数值而不是字符串。因此,我们需要在 R 中将这些字符串转换为 NA,以便我们可以继续进行预期的分析。
示例
考虑下面的数据帧 −
> x1<-rep(c(1,3,6,7,5,2,"XYZ",12,4,5),times=2) > x2<-rep(c(67,"XYZ",45,32,52),each=4) > df<-data.frame(x1,x2) > df x1 x2 1 1 67 2 3 67 3 6 67 4 7 67 5 5 XYZ 6 2 XYZ 7 XYZ XYZ 8 12 XYZ 9 4 45 10 5 45 11 1 45 12 3 45 13 6 32 14 7 32 15 5 32 16 2 32 17 XYZ 52 18 12 52 19 4 52 20 5 52
将所有 XYZ 转换为 NA −
> df[df=="XYZ"]<-NA > df x1 x2 1 1 67 2 3 67 3 6 67 4 7 67 5 5 <NA> 6 2 <NA> 7 <NA> <NA> 8 12 <NA> 9 4 45 10 5 45 11 1 45 12 3 45 13 6 32 14 7 32 15 5 32 16 2 32 17 <NA> 52 18 12 52 19 4 52 20 5 52
让我们再看一个示例 −
> ID<-c("Class",2:20) > ID<-c("Class",1:19) > Group<-rep(c("Class",2,3,4,5),times=4) > df1<-data.frame(ID,Group) > df1 ID Group 1 Class Class 2 1 2 3 2 3 4 3 4 5 4 5 6 5 Class 7 6 2 8 7 3 9 8 4 10 9 5 11 10 Class 12 11 2 13 12 3 14 13 4 15 14 5 16 15 Class 17 16 2 18 17 3 19 18 4 20 19 5 > df1[df1=="Class"]<-NA > df1 ID Group 1 <NA> <NA> 2 1 2 3 2 3 4 3 4 5 4 5 6 5 <NA> 7 6 2 8 7 3 9 8 4 10 9 5 11 10 <NA> 12 11 2 13 12 3 14 13 4 15 14 5 16 15 <NA> 17 16 2 18 17 3 19 18 4 20 19 5
广告