创建一个 data.frame 个相互依赖的变量
Create a data.frame of variables depending on each other
我想用相互依赖的变量创建一个数据框。我可以通过使用 dplyr
样式的代码来完成此操作:
p.1 <- .1
p.2 <- .3
p.3 <- .6
l <- 1e2
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE))
df <- df %>%
mutate(
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE))
)
一步创建 df 会更好,但这不起作用,因为找不到 var.1:
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE),
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)
),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE)
)
)
首先创建一个空 df 的另一个尝试也不起作用,这会引发错误 Error in mutate_impl(.data, dots) : Column var.1
must be length 0(行数)或一,不是 100:
df <- data.frame()
df <- df %>%
mutate(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE),
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)
),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE)
)
)
实际上我有更多的变量,我想要一个更经济的解决方案来完成这项任务。
你很接近
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE)) %>% # create data frame with var.1 first, then mutate
mutate(
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE))
)
我想用相互依赖的变量创建一个数据框。我可以通过使用 dplyr
样式的代码来完成此操作:
p.1 <- .1
p.2 <- .3
p.3 <- .6
l <- 1e2
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE))
df <- df %>%
mutate(
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE))
)
一步创建 df 会更好,但这不起作用,因为找不到 var.1:
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE),
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)
),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE)
)
)
首先创建一个空 df 的另一个尝试也不起作用,这会引发错误 Error in mutate_impl(.data, dots) : Column var.1
must be length 0(行数)或一,不是 100:
df <- data.frame()
df <- df %>%
mutate(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE),
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)
),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE)
)
)
实际上我有更多的变量,我想要一个更经济的解决方案来完成这项任务。
你很接近
df <- data.frame(
var.1 =
sample(0:1, l, prob = c(1 - p.1, p.1), replace = TRUE)) %>% # create data frame with var.1 first, then mutate
mutate(
var.2 = ifelse(
var.1 == 1, 0,
sample(0:1, l, prob = c(1 - p.2, p.2), replace = TRUE)),
var.3 = ifelse(
var.1 == 1 | var.2 == 1, 0,
sample(0:1, l, prob = c(1 - p.3, p.3), replace = TRUE))
)