如何循环查看一列中的值以查找特定的字符集,然后,如果该行包含这些字符,请在新列中专门为该行指定值?
例如,在这个问题中,我们必须为每个不同意的反应分配一个点,并为同意的反应分配零。
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 :(得分: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)