2016-09-27 12 views
-1

特定の文字セットを探して、ある行の値をループして、行にそれらの文字がある場合は、新しい列のその行に固有の値を割り当てますか?特定の行にデータを選択して追加する方法は?

たとえば、この問題では、不一致の応答に1点、一致する応答に0を割り当てる必要があります。

 Id Gender Age Participate Question   Response Score 
    <int> <chr> <int>  <int> <chr>    <chr> <dbl> 
1  16 Male 20   1  Q1 Slightly Disagree  0 
2  17 Male 40   1  Q1 Definitely Agree  0 
3  18 Male 33   1  Q1 Definitely Agree  0 
4  19 Male 18   1  Q1 Definitely Agree  0 
5  20 Male 24   1  Q1 Definitely Disagree  0 
6  21 Female 42   1  Q1 Slightly Disagree  0 
7  22 Female 19   1  Q1  Slightly Agree  0 
8  28 Female 49   1  Q1 Slightly Disagree  0 
9  29 Female 17   1  Q1  Slightly Agree  0 
10 31 Male 18   1  Q1  Slightly Agree  0` 

答えて

0

UPDATE FROM

SELECT *を、1つを見つけることができませんでした。

とにかく@ Zheyuan Liが指摘したように、この場合はifelseを使用できます。

greplを使用して、テキストの中に「同意しない」という単語があるかどうかを調べることができます。ブールベクトルを返すgrepl、あなたのデータフレームとしてdfを考慮し、そうas.numeric

as.numeric(grepl("Disagree", df$Response)) 

#[1] 1 0 0 0 1 1 0 1 0 0 

でそれをラップすることによって、数値に変換することができ、あなたはの私の理解によると

df$new_column <- as.numeric(grepl("Disagree", df$Response)) 
+1

ありがとうございました。私はちょうどRで始まりました(そして一般的にコーディング)ので、私は絶対に失われています。 –

0

new_columnを追加することができますクエリの下の問題はあなたのために働くはずです。

UPDATE yourSchema.yourTable anAlias 
SET Score = finalData.Score 
FROM 
    (SELECT Id, 
      CASE 
       WHEN Response LIKE '%Disagree%' THEN 1 
       ELSE 0 
      END AS score 
    FROM yourSchema.yourTable) finalData 
WHERE anAlias.Id = finalData.Id; 
関連する問題