如何选择数据并将其添加到特定行?

时间:2016-09-27 16:33:06

标签: r loops

如何循环查看一列中的值以查找特定的字符集,然后,如果该行包含这些字符,请在新列中专门为该行指定值?

例如,在这个问题中,我们必须为每个不同意的反应分配一个点,并为同意的反应分配零。

     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`

3 个答案:

答案 0 :(得分:0)

这必须是重复的,无法找到。

无论如何,正如@Zheyuan Li指出的那样,在这种情况下你可以使用a1 1 a2 a2 1 a3 a3 1 a4 a4 1 a5

您可以使用ifelse查找文字是否包含&#34; Disagree&#34;在里面。 grepl返回一个布尔向量,您可以通过将其包装在grepl

中将其转换为数字
as.numeric

因此,考虑as.numeric(grepl("Disagree", df$Response)) #[1] 1 0 0 0 1 1 0 1 0 0 作为您的数据框,您可以添加df

new_column

答案 1 :(得分: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;

答案 2 :(得分:-1)