簡體   English   中英

如何使一個變量成為另一個變量的條件並根據概率分配一個值

[英]How to make a variable conditional to another variable and assign a value based on probability

我正在嘗試為 A、B 和 C 生成二進制變量。1 表示您屬於該組。 現在,有了這些信息,我想創建另一個基於稱為 X 的概率的二元變量,它根據前面的組分配 1 和 0。 我想弄清楚這個條件結構的正確方法是什么。 下面列出的都是假設值,這只是一個數據生成模擬練習。

A,B,C個二進制指標。

A <- c(rep(1,195), rep(0,805))
B <- c(rep(1,90), rep(0,910))
C <-  c(rep(1,715), rep(0,285))

創建 X 二進制指標,我一直在追求 case_when,但出了點問題,我可能沒有理解 case_when 的能力,因為我在其中嵌入了另一個 function。 所以,我知道這可能是不正確的,但是,希望它能說明我的目標是什么。

mutate(english == case_when(A == 1 ~ rbinom(250,1,.40),
                                B == 1 ~ rbinom(250,1,.90),
                                C == 1 ~ rbinom(500,1,.10))

我知道我也可以使用 ifelse function 但我不太確定如何根據我的問題進行這項工作 - 仍在努力思考。 謝謝!

要生成具有獨特種族的個人列表,然后隨機分配英語變量,您可以使用

df <- tibble(race = c(rep("black", 195), rep("hispanic", 90), rep("white", 715)),
       english = case_when(race == "black" ~ rbinom(1000, 1, 0.98),
                        race == "hispanic" ~ rbinom(1000, 1, 0.40),
                        race == "white" ~ rbinom(1000, 1, 0.98)))

根本不需要二進制列。 如果你還想要它們,你可以試試

df <- tibble(row_number = 1:1000,
       temp = 1,
       race = c(rep("black", 195), rep("hispanic", 90), rep("white", 715)),
       english = case_when(race == "black" ~ rbinom(1000, 1, 0.98),
                        race == "hispanic" ~ rbinom(1000, 1, 0.40),
                        race == "white" ~ rbinom(1000, 1, 0.98))) %>% 
    pivot_wider(names_from =race, values_from = temp, values_fill = 0)

如果你有另一個向量

other_var <- 1000:1

你想附加為一列,那么你可以使用

df <- df %>% bind_cols(other = other_var)

要么

df$other <- other_var

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM