4

「A」、「B」、およびNA値を含むマトリックスがあり、すべての列の「A」または「B」または値の数を数えたいと思いNAます。

sum(mydata[ , i] == "A")

sum(mydata[ , i] == "B")

のない列ではうまくいきましNAた。を含む列の場合、 で のNA数を数えることができNAますsum(is.na(mydata[ , i])。これらの列では、数値ではなく結果としてsum(mydata[ , i] == "A")返されます。NA

値を含む列の「A」値の数をカウントするにはどうすればよいNAですか?

ご協力いただきありがとうございます!

例:

> mydata
    V1  V2  V3  V4 
V2 "A" "A" "A" "A"
V3 "A" "A" "A" "A"
V4 "B" "B" NA  NA 
V5 "A" "A" "A" "A"
V6 "B" "A" "A" "A"
V7 "B" "A" "A" "A"
V8 "A" "A" "A" "A"

sum(mydata[ , 2] == "A")
# [1] 6

sum(mydata[ , 3] == "A")
# [1] NA

sum(is.na(mydata[ , 3]))
# [1] 1
4

6 に答える 6

7

この関数sumは (R の他の多くの数学関数と同様に) 引数を取りますna.rm。を設定するna.rm=TRUEと、R はNA計算を行う前にすべての値を削除します。

試す:

sum(mydata[,3]=="A", na.rm=TRUE)
于 2012-03-22T09:36:18.493 に答える
3

これがあなたが求めているものかどうかはわかりません。RnewB もそうなので、これが機能しているかどうかを確認してください。行数とあなたの行数の差は、NAアイテムの数を教えてくれます。

colSums(!is.na(mydata))
于 2014-01-11T15:19:26.947 に答える
0

もう 1 つの可能性は、因子の列を変換してから関数 summary を使用することです。例:

vec<-c("A","B","A",NA)

summary(as.factor(vec))

于 2015-01-26T15:50:18.890 に答える
0

@Andrieからの回答を拡張するには、

mydata <- matrix(c(rep("A", 8), rep("B", 2), rep(NA, 2), rep("A", 4),
  rep(c("B", "A", "A", "A"), 2), rep("A", 4)), ncol = 4, byrow = TRUE)

myFun <- function(x) {
  data.frame(n.A = sum(x == "A", na.rm = TRUE), n.B = sum(x == "B",
    na.rm = TRUE), n.NA = sum(is.na(x)))
}

apply(mydata, 2, myFun)
于 2012-03-22T11:46:20.400 に答える
-1

table一度にすべての値をカウントするために使用できます。

于 2012-03-22T09:37:44.540 に答える