【问题标题】:my r program for counting missing data in files我的 r 程序用于计算文件中丢失的数据
【发布时间】:2012-05-23 12:52:30
【问题描述】:

我创建了我的程序,用于计算一个包含 10,000 多行的文件中的缺失数据(我有 1700 个这样的文件)。最后警告消息说: :"if ((b[i, 5] == NA) && (b[i, 1] > 1980)) { 中的错误: 需要 TRUE/FALSE 的缺失值"

代码如下:

rm(list=ls())
setwd("C:\\Users\\.......")
a <- list.files();
n=0;
j=1;
mat <- matrix(data=NA,nrow=20000,ncol=8);
colnames(mat)<-c("Station","S.Year","S.Month","S.Day","E.Year","E.Month","E.Day","Count");
d<-matrix(data=NA,nrow=3,ncol=1);
for( k in 1:length(a) )
{
    b <- as.matrix(read.table(a[k],skip=7,header=F));
    t<-gsub(".txt","",a[k])

    for(i in 1:(length(b[,1])-1))

        {                     
        if((b[i,5]==NA)&&(b[i,1]>1980))
             {n=n+1;

            if(n==1)
            {d[1,1]=b[i,1]
            d[2,1]=b[i,2]
            d[3,1]=b[i,3]}

        if((b[i+1,5]!=NA)||(i==(length(b[,1])-1)))
            { if(n>10)
             {mat[j,1]=t;
              mat[j,2]=d[1,1]
              mat[j,3]=d[2,1]
              mat[j,4]=d[3,1]
              mat[j,5]=b[i,1]
              mat[j,6]=b[i,2]
              mat[j,7]=b[i,3]
              mat[j,8]=n;
              j=j+1;} 
            n=0;}                 


               }
          }
j=j+1;  
    }
write.csv(mat,"Count.csv", append = TRUE,row.names = FALSE)

任何帮助为什么该错误消息?也许我忽略了什么?

数据来自气象站,因此将具有以下结构:

YY MM DD Srad Tmax Tmin (雨) 1980 1 1 3 2 -3

一直持续到 2011 年 12 月 31 日

预期的输出应该是一个 csv 文件,第一个 Col 是文件名(每一行都是一个文件),第二个 Col 是遇到第一个 NA 时的年份,第三个 Col 是月份,第四个 Col 是天当找到 NA 时,第五、第六和第七列是结束年份、Mm 和 Dd,当 NA 是最后一个时。最后一列是该时间范围内的 NA 总数 因此,对于一个文件(例如 File1.txt),从 1981 年 1 月 13 日到 1981 年 2 月 1 日可能会丢失 3 天的数据,我将在最后一列中获得此期间的 NA 数量。 对于同一个文件,我稍后可能会有另一个 NA 时期(例如在 1997 年),因此在第三行我将再次拥有文件名、开始和结束时间框架的时期以及 NA 的数量。 我希望这不会太混乱......

【问题讨论】:

  • 您能否从示例测试文件中添加 small sn-p 数据并给出您预期的输出?
  • 数据来自气象站,因此将具有以下结构:YY MM DD Srad Tmax Tmin (Rain)

标签: r


【解决方案1】:

对于 NA,什么都不是“==”或“!=”。请改用is.na()!is.na()。所以逻辑测试是:

if ( is.na( b[i,5]) && ( b[i,1]>1980 ) )

if( !is.na(b[i+1,5]) || (i==(length(b[,1])-1)))

【讨论】:

  • 非常感谢 DWin,这就是我仍然是 R 的业​​余爱好者的问题。我每天都在学习它,但我猜我仍然在这里和那里犯了一些愚蠢的错误。这真的很有帮助!!非常感谢!
  • 再次,非常感谢!这样可行!!我现在明白了!我试图做一些逻辑上没有意义的事情。原因是在我更换 NA 时使用 -99.9 而不是 NA 之前,我没有仔细考虑过这一点!再次感谢您!
  • @david 你能把这个答案打掉,这样你就可以得到回应,Dwin 得到答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多