0

このようなデータフレームがあります

xx

dput(head(xx,10))
structure(list(JobName = c("EXBCV01D", "EXBCV01D", "EXBCV01D", 
"EXBCV01D", "EXBCV01D", "EXBCV01D", "EXBCV01D", "EXBCV01D", "EXBCV01D", 
"EXBCV01D"), Date = c(120820L, 120817L, 120816L, 120815L, 120814L, 
120813L, 120810L, 120809L, 120808L, 120807L), TargetDate = c(NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_)), .Names = c("JobName", 
"Date", "TargetDate"), row.names = c(NA, 10L), class = "data.frame")

ターゲットではないすべての行を取得する必要があります

私はこれをやっています xxx<-with(xx, xx[!is.na(TargetDate), ])

私はこれを得る:

head(xxx)
      JobName   Date TargetDate
2689 EXBCV06D 120820         -1
2690 EXBCV06D 120820         -1
2691 EXBCV06D 120820         -1
2692 EXBCV06D 120820         -1
2693 EXBCV06D 120817         -1
2694 EXBCV06D 120817         -1

同じ日付に複数の JobName を取得しています。ここで奇妙なことが起こっています。

4

2 に答える 2

0

さらに、便利な場合がありますcomplete.cases。この関数を使用して、任意の列にNAs がある行を削除できます。

d <- read.table(text="Date   Process Target
1/1/2012 ftp    -2
1/2/2012 http    -1
1/3/2012 telnet  NA
1/4/2012  ssh    NA", header=TRUE)

d[complete.cases(d), ]

#       Date Process Target
# 1 1/1/2012     ftp     -2
# 2 1/2/2012    http     -1

subsetスクリプトでプログラムではなく、対話モードでのみ関数を使用することをお勧めします。この関数の評価方法が原因で、問題が発生する可能性があります (説明を参照)。何かをテストするだけの場合は、快適に使用してください。ただし、他の人が使用する可能性のある関数を作成している場合は、安全のために誤りを犯し、[@Gavin と私の回答の両方で示されている標準のサブセット構文を使用してください。

于 2012-11-14T19:05:50.177 に答える
0

関数名のは小文字であってはなりis.na(....)ません。is.NA(....)na

たとえば、データの使用

x <- read.table(text = "Date   Process Target
1/1/2012 ftp    -2
1/2/2012 http    -1
1/3/2012 telnet  NA
1/4/2012  ssh    NA", header = TRUE, na.strings="NA")
x <- transform(x, Target = factor(Target))

これは動作します

R> xx <- subset(x, !is.na(Target))
R> xx
      Date Process Target
1 1/1/2012     ftp     -2
2 1/2/2012    http     -1

これは、通常のサブセット ルーチンを使用して行うこともできます。

R> with(x, x[!is.na(Target), ])
      Date Process Target
1 1/1/2012     ftp     -2
2 1/2/2012    http     -1

また

R> x[!is.na(x$Target), ]
      Date Process Target
1 1/1/2012     ftp     -2
2 1/2/2012    http     -1
于 2012-11-14T19:01:30.087 に答える