2016-09-27 159 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; 
相关问题