1

私はRを使用するのが初めてで、答えを見つけようとしている質問があります。私は次のように編成されたファイルを持っています(何千もの行がありますが、簡単にするためにサンプルを示しています):

YEAR   Month  day    S1      T1     T2         R1
1965    3       2    11.7    20.6    11.1    18.8
1965    3       3    14.0    16.7     3.3     0.0
1965    3       4   -99.9   -99.9   -99.9   -99.9
1965    3       5     9.2     5.6     0.0   -99.9
1965    3       6    10.1     6.7     0.0   -99.9
1965    3       7     9.7     7.2     1.1     0.0

-99.9が配置されている年、月、日を各列(T1、T2、およびR1)について知りたいのですが。たとえば、1980/1/3から1980/1/27まではT1にX -99.9があり、1990/2/10から1990/3/30まではT1にY-99.9があります。T2とRについても同じです。Rでこれを行うにはどうすればよいですか?

これはこのような1つのファイルだけですが、同じ問題を持つほぼ2000のファイルがあります(ループする必要があることはわかっています)が、1つのファイルに対してそれを行う方法を知っている場合は、ループを作成します。

助けてくれて本当に感謝しています。読んで助けてくれてありがとう!!!

4

2 に答える 2

0

私が正しく理解していれば、月にいくつの「-99.9」を取得し、列ごとに取得したいと思います。

これが、を使用したS1のコードですplyr。例を拡張して、さらに1か月分のデータを取得したことに気付くでしょう。

library(plyr)

my.table <-read.table(text="YEAR Month day S1 T1 T2 R1
1965 3 2 11.7 20.6 11.1 18.8
1965 3 3 14.0 16.7 3.3 0.0
1965 3 4 -99.9 -99.9 -99.9 -99.9
1965 3 5 9.2 5.6 0.0 -99.9
1965 3 6 10.1 6.7 0.0 -99.9
1965 3 7 9.7 7.2 1.1 0.0
1966 1 7 -99.9 7.2 1.1 0.0
1966 1 8 -99.9 7.2 1.1 0.0
", header=TRUE, as.is=TRUE,sep = " ")

#Create a year/month column to summarise per month
my.table$yearmonth <-paste(my.table$YEAR,"/",my.table$Month,sep="")

S1 <-count(my.table[my.table$S1==-99.9,],"yearmonth")
S1
  yearmonth freq
1    1965/3    1
2    1966/1    2
于 2012-04-25T01:30:27.560 に答える
0

最後のデータフレーム列の名前を「R1」に変更する自由を取りました

 lapply(c('T1', 'T2', 'R1'), function(x) { dfrm[ dfrm[[x]]==-99.9 , # rows to select
                                               1:3 ] }# columns to return
        )
#-------------    
[[1]]
  YEAR Month day
3 1965     3   4

[[2]]
  YEAR Month day
3 1965     3   4

[[3]]
  YEAR Month day
3 1965     3   4
4 1965     3   5
5 1965     3   6

値とカウントのどちらが必要かは明確ではありませんでした(同じレポートに両方を含めることはできないと思います)。エントリに名前を付けたい場合は、次のようにします。

> misdates <- .Last.value
> names(misdates) <- c('T1', 'T2', 'R1')

カウントが必要な場合:

 lapply(misdates, NROW)
$T1
[1] 1

$T2
[1] 1

$R1
[1] 3

(NA値の使用方法を学習することをお勧めします。欠落値として数値を使用することは、データ管理をお勧めしません。)

于 2012-04-24T21:16:28.490 に答える