【问题标题】:How to select and add data to specific rows? [duplicate]如何选择数据并将数据添加到特定行? [复制]
【发布时间】:2016-09-27 16:33:06
【问题描述】:

您将如何遍历一列中的值以查找一组特定字符,然后,如果该行包含这些字符,则在新列中专门为该行分配一个值?

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

     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`

【问题讨论】:

    标签: r loops


    【解决方案1】:

    这一定是重复的,找不到。

    无论如何,正如@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 by

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

    【讨论】:

    • 非常感谢。我刚开始使用 R(以及一般的编码),所以我完全迷路了。
    【解决方案2】:

    根据我对您的问题的理解,以下查询应该适合您。

    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;
    

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 点击链接查看类似问题。用户回复..就像他们告诉我的那样,任何人都会为你编写代码..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多