为多个变量创建一个条件为 OR 的新变量
Create a new variable with condition OR for multiples variables
目前我正在处理 Gender-Based 暴力的数据集。我有几个维度,例如身体暴力、性暴力或心理暴力,每个维度都有几个指标,每个维度都有一组 6 到 10 个指标。另外,我有两个时间尺度:过去 12 个月内和过去 12 个月之前。长话短说,至少我正在使用 70 个指标。
我必须创建一个变量“生命中的某个时刻”来指示女性是否在任何时间段的任何方面遭受过暴力。因此,如果一位女性在 70 个指标中的任何一个中回答“是”,那么她在她生命中的某个时刻遭受过暴力。
我的问题是如何更快地创建新变量,因为我唯一认为它类似于
base <- base %>% mutate(newvariable= case_when(v1 == 1 | v2 == 1 | v3 == 1 ~ ... 1))
但我有 70 个变量。那么,我可以用一个条件或在一个变量范围内创建这个新变量吗?
你可以这样做:
library(dplyr)
mydf <- data.frame(a = sample(c(0,1), 10, replace = TRUE),
b = sample(c(0,1), 10, replace = TRUE),
c = sample(c(0,1), 10, replace = TRUE))
mydf |>
rowwise() |>
mutate(outcome = if_else(sum(c_across(everything())) >= 1, TRUE, FALSE)) |>
ungroup()
# A tibble: 10 x 4
a b c outcome
<dbl> <dbl> <dbl> <lgl>
1 0 0 0 FALSE
2 1 0 1 TRUE
3 0 0 1 TRUE
4 1 0 0 TRUE
5 1 1 0 TRUE
6 1 0 1 TRUE
7 1 0 1 TRUE
8 0 1 1 TRUE
9 1 0 1 TRUE
10 0 0 1 TRUE
目前我正在处理 Gender-Based 暴力的数据集。我有几个维度,例如身体暴力、性暴力或心理暴力,每个维度都有几个指标,每个维度都有一组 6 到 10 个指标。另外,我有两个时间尺度:过去 12 个月内和过去 12 个月之前。长话短说,至少我正在使用 70 个指标。
我必须创建一个变量“生命中的某个时刻”来指示女性是否在任何时间段的任何方面遭受过暴力。因此,如果一位女性在 70 个指标中的任何一个中回答“是”,那么她在她生命中的某个时刻遭受过暴力。
我的问题是如何更快地创建新变量,因为我唯一认为它类似于
base <- base %>% mutate(newvariable= case_when(v1 == 1 | v2 == 1 | v3 == 1 ~ ... 1))
但我有 70 个变量。那么,我可以用一个条件或在一个变量范围内创建这个新变量吗?
你可以这样做:
library(dplyr)
mydf <- data.frame(a = sample(c(0,1), 10, replace = TRUE),
b = sample(c(0,1), 10, replace = TRUE),
c = sample(c(0,1), 10, replace = TRUE))
mydf |>
rowwise() |>
mutate(outcome = if_else(sum(c_across(everything())) >= 1, TRUE, FALSE)) |>
ungroup()
# A tibble: 10 x 4
a b c outcome
<dbl> <dbl> <dbl> <lgl>
1 0 0 0 FALSE
2 1 0 1 TRUE
3 0 0 1 TRUE
4 1 0 0 TRUE
5 1 1 0 TRUE
6 1 0 1 TRUE
7 1 0 1 TRUE
8 0 1 1 TRUE
9 1 0 1 TRUE
10 0 0 1 TRUE