2017-08-23 13 views
0

私は、アンケートの設定方法のためにいくつかの同様の変数を持つアンケートのデータセットを持っています。例えば、私は2016年に中程度のソーダの価格に20の異なる変数を持っています。施設は1つの中程度のソーダの質問(彼らがあった施設の種類に依存しています)にのみ応答します。私はすべての施設のために1つの中程度のソーダ変数を得るためにこれらを一緒にRに追加したいと思います。データがどのように見えるかの例を以下に示します。バイナリ演算子に数値ではない引数:Rの数値変数を加算する

Q5a_MediumSoda_Coffee: 2.25, 3.35, NA, NA, NA, NA, NA... 
Q6a_Mediumsoda_Burgers:NA,NA, 2.50, NA, NA, NA, NA... 
Q7a_MediumSoda_Thai:NA,NA,NA,NA,2.30, 1.50, 2.75.. 

私はそれらを一緒に追加することによって、一つにすべてのこれらの変数を組み合わせることを試みた。しかし、私は次のエラーを取得する

MediumSoda2016<-sum(Q5a_16_MedS_FSCoff+Q7a_16_MedS_FSAsian+Q9a_16_MedS_FSAmer+Q11a_16_MedS_FSDeli+Q13a_16_MedS_FSMex+Q15a_16_MedS_FSPizza+Q17a_16_MedS_FSPub+Q19a_16_MedS_FSBurgers+Q21a_16_MedS_FSItalian+Q23a_16_MedS_FSBBQRibs+Q25a_16_MedS_FSSeafood+Q27a_16_MedS_FSMed_Greek+Q29a_16_MedS_FSIndian+Q31a_16_MedS_FSOther, na.rm=TRUE)* 

を:

Error in Q5a_16_MedS_FSCoff + Q7a_16_MedS_FSAsian + Q9a_16_MedS_FSAmer + : 
    non-numeric argument to binary operator 

私がチェックし、すべての変数が数値でだから、私はそれが和関数の問題であると思う(と私は間違った関数を使っている)が、どのコードを使うのか分からないようだ。私は、これらのすべてを組み合わせることを願っています。したがって、このコラムの各施設の価格と中流ソーダデータの1つの列があります。どんな助けでも大歓迎です。

+2

変数のいずれかが数値でないか、間違って入力したようです。適切な[再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)がなければ、ここに続行することはあまりありません。 'sum()'と '+'の両方を組み合わせると奇妙に見えます。単一の値か、行ごとに1つの値を使用するかどうかは、私には不明です。あなたは、さまざまなベクトルの束で作業するのではなく、これらの変数をすべて適切なデータフレームに入れることを検討しましたか? – MrFlick

+0

呼び出しの最後に「...、na.rm = TRUE)*」というアスタリスクがあります。次の行を始めるものは、おそらく数値ではありません。 –

答えて

0

MrFlickのアドバイスを受け取り、まずデータフレームにデータを結合します。他の変数のいずれかがNAであるかどうかに応じて、ifelse関数を使用して新しい変数を作成します。

# assuming the three "variables" are vectors 
df <- data.frame(Q5a_MediumSoda_Coffee, Q6a_Mediumsoda_Burgers, Q7a_MediumSoda_Thai) 

# use vectorized operation as well as ifelse to create new variable 
df$median <- ifelse(is.na(df$Q5a_MediumSoda_Coffee), df$Q6a_Mediumsoda_Burgers, df$Q5a_MediumSoda_Coffee) 
df$median <- ifelse(is.na(df$median), df$Q7a_MediumSoda_Thai, df$median) 
関連する問題