2016-09-27 153 views
-1

你會如何遍歷一列尋找特定的字符集的值,然後,如果行有這些字符,在新的一列專門分配一個值,該行?如何選擇數據並將其添加到特定行?

例如,在這個問題,我們必須在一個點分配到每一個不同意響應和零到同意的。

 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

這必須是一個重複,找不到一個。

無論如何,正如@Zheyuan Li指出的那樣,在這種情況下可以使用ifelse

您可以使用grepl發現如果文本有言「不同意」在裏面。 grepl返回一個布爾值向量,你可以將它通過包裝它as.numeric

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

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

所以轉換爲數值,考慮df作爲數據框,你可以添加一個new_column通過

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

非常感謝。我剛剛開始使用R(和一般編碼),所以我完全失去了。 –

0

根據我的理解你的問題下面的查詢應該爲你工作。

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; 
相關問題