1. ホーム
  2. r

[解決済み] 条件付き平均値文

2022-02-18 03:33:20

質問

という名前のデータセットがあります。 bwght を含み、変数 cigs (1日に吸うシガーラッテ)

の平均を計算すると cigs データセット中の bwght を使っています。 mean(bwght$cigs) 2.08という数字が出ました。

1388人の女性のうち、タバコを吸うのは212人(吸わないのは1176人)です。

summary(bwght$cigs>0) という結果が出ました。

Mode      FALSE    TRUE    NA's 
logical    1176     212       0

の平均を求めろと言われた。 cigs を吸っている女性(212人)の中で。

非喫煙者 = 0 を除外するための正しい構文が見つからず、困っています。 試してみました。

  • mean(bwght$cigs| bwght$cigs>0)

  • mean(bwght$cigs>0 | bwght$cigs=TRUE)

  • if (bwght$cigs > 0){ sum(bwght$cigs) }

  • x <-as.numeric(bwght$cigs, rm="0"); mean(x)

しかし、何も動作しないようです どなたか、助けていただけませんか?

解決方法は?

非喫煙者を除外したい場合、いくつかの選択肢があります。 最も簡単なのは、おそらくこれでしょう。

mean(bwght[bwght$cigs>0,"cigs"])

データフレームでは、最初の変数が行で、次の変数が列となります。そのため、サブセットを行うには dataframe[1,2] で、1行目、2列目を取得します。また、行の選択にはロジックを使用することができます。この場合 bwght$cigs>0 を最初の要素として使用することで、行が cigs がゼロでない場合。

他のものは、以下の理由でうまくいきませんでしたね。

mean(bwght$cigs| bwght$cigs>0)

これは事実上の論理比較です。のTRUE/FALSEの結果を求めているのです。 bwght$cigs OR bwght$cigs>0 そして、その上で平均を取ります。完全な自信はありませんが、Rは論理型として入力されたデータを mean() 関数を使用します。

mean(bwght$cigs>0 | bwght$cigs=TRUE)

同じ問題です。あなたが使用するのは | という記号があり、これは論理を返すので、Rは論理の平均を取ろうとしている。

if(bwght$cigs > 0){sum(bwght$cigs)}

ひょっとして、もともとはSASのプログラマーだったんですか?これは、私が最初に打った方法に似ていますね。基本的には if() は、RではSASと同じようにはいきません。その例では、あなたが使っているのは bwght$cigs > 0 Rはlapplyやtapplyなどの関数をチェックして、SASとは異なるループを処理します。

x <-as.numeric(bwght$cigs, rm="0")
mean(x)

正直なところ、これで何ができるのかわからない。以下のようにするとうまくいくかもしれません。 rm="0" が引用符で囲まれていない...?