r - 将样本信息作为新列添加到数据集的有效方法
问题描述
我知道如何通过对某些行进行采样来对数据框进行子集化。但是,我正在努力寻找一种简单(最好是 tidyverse)的方法来将采样信息作为新列添加到我的数据集中,即我只想用“1”填充一个新列,如果它被采样和“0 “ 如果不。
我目前有这个,但感觉过于复杂。请注意,在示例中,我想每组采样 3 行。
df <- data.frame(group = c(1,2,1,2,1,1,1,1,2,2,2,2,2,1,1),
var = 1:15)
library(tidyverse)
df <- df %>%
group_by(group) %>%
mutate(sampling_info = sample.int(n(), size = n(), replace = FALSE),
sampling_info = if_else(sampling_info <= 3, 1, 0))
解决方案
你可以试试 -
library(dplyr)
set.seed(123)
df %>%
arrange(group) %>%
group_by(group) %>%
mutate(sampling_info = as.integer(row_number() %in% sample(n(), size = 3))) %>%
ungroup
# group var sampling_info
# <dbl> <int> <int>
# 1 1 1 0
# 2 1 3 0
# 3 1 5 1
# 4 1 6 0
# 5 1 7 0
# 6 1 8 0
# 7 1 14 1
# 8 1 15 1
# 9 2 2 0
#10 2 4 1
#11 2 9 1
#12 2 10 0
#13 2 11 0
#14 2 12 1
#15 2 13 0
sample(n(), size = 3)
将为每个生成 3 个随机行号group
,我们为这些行号分配 1。
推荐阅读
- javascript - 为什么 date.getHours()%12 给你 1-12 格式的时间?
- graph - 使用最大标准偏差减少的最小生成树聚类
- python - 从网上下载表格
- python - 如何用列名中的非标准字符替换 PySpark 中所有列的值?
- django - 显示从外键关系到自序列化程序的信息
- amazon-web-services - 无法在 Python 中解析 .csv
- c - 将 int 数字转换为 hex char - C 编程
- r - devtools/安装包的问题
- flutter - 您如何使用文本字段进行输入,将其放入等式中,然后在按下按钮后将输出显示为文本?
- haskell - 将问题编号与haskell中的页码匹配