如何在 R 中以给定的权重创建具有两个值或名称的列

问题描述

我正在尝试在 .dbf 中的数据中创建一列。 我需要创建一个列,其中 70% 为 0(或 TRUE),30% 为 1(或 FALSE),只是随机的。

我该怎么做?

解决方法

如果你需要例如 100 个值,试试这个:

sample(c(0,1),size = 100,replace = TRUE,prob = c(0.7,0.3))
,

这种方式建立在@Leonardo 的回应之上

这种方式可以帮助您创建一个包含 2 列和一个标题的数据框。

  1. 一列包含您的数据
  2. 另一列包含 False 或 True,其中 False == 30%,True == 70%

首先创建数据框和列

df <- sample(c(0,0.3))

column_1 <- "Column 1"

将两者结合起来创建数据框

newdf <- data.frame("Column 1" = df)

最后,使用grepl命令,我们可以填充一列,用False和True

newdf$presence <- ""
newdf$abesence <-"1"
newdf$presence[grepl('1',newdf$abesence)] <- ifelse(newdf$Column.1[grepl('1',newdf$abesence)] == 1,'False','True')

去掉不必要的列

newdf[3] <- NULL

检查 False 和 True 的频率

table(newdf$presence)

好了!这不是最优雅的方法,但它有效:)