変数bwght
(1日あたりの喫煙量)を含むcigs
という名前のデータセットがあります。
データセットcigs
のbwght
の平均をmean(bwght$cigs)
を使用して計算すると、2.08という数値が得られます。
サンプルの1388人の女性のうち212人だけが喫煙しています(そして1176人は喫煙していません):
summary(bwght$cigs>0)
は結果を出します:
_Mode FALSE TRUE NA's
logical 1176 212 0
_
喫煙している女性(212人)の平均cigs
を見つけるように求められました。
私が試した非喫煙者= 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]
_を使用してサブセット化し、最初の行、2番目の列を取得できます。行選択でロジックを使用することもできます。最初の要素として_bwght$cigs>0
_を使用すると、cigs
がゼロでない行のみを持つようにサブセット化されます。
あなたの他のものは以下の理由で機能しませんでした:
_mean(bwght$cigs| bwght$cigs>0)
_
これは事実上論理的な比較です。 _bwght$cigs OR bwght$cigs>0
_のTRUE/FALSEの結果を求めて、それを平均します。完全にはわかりませんが、Rはmean()
関数の論理として型指定されたデータを取得することさえできないと思います。
_mean(bwght$cigs>0 | bwght$cigs=TRUE)
_
同じ問題。論理積を返す_|
_記号を使用すると、Rは論理積の平均をとろうとします。
_if(bwght$cigs > 0){sum(bwght$cigs)}
_
たまたま、あなたは元々SASプログラマーでしたか?これは私が最初に入力した方法のように見えます。基本的に、if()
はRではSASで実行されます。この例では、if条件として_bwght$cigs > 0
_を使用していますが、Rはbwght $ cigs> 0の結果であるベクトルの最初の要素のみを参照するため、機能しません。Rはループを処理します。 SASとは異なります-lapply、tapplyなどの関数をチェックしてください。
_x <-as.numeric(bwght$cigs, rm="0")
mean(x)
_
私は正直なところ、これが何をするのかわかりません。 _rm="0"
_に引用符がない場合は機能する可能性があります...?
mean(bwght[bwght$cigs>0,"cigs"])
ステートメントが失敗し、「引数が数値でも論理でもない:NAを返す」というメッセージが返されました。
行列への変換はこれを解決しました:
mean(data.matrix(bwght[bwght$cigs>0,"cigs"]))