r - 随机抽样数据集以减少数据集中的值
问题描述
我目前正在尝试根据给定的总和随机减少列中的值。例如,如果主要数据是这样的;
标识值
1 4
2 10
3 16
运行代码后,值的总和应该是 10,这需要随机完成(每个成员的减少应该随机选择)
标识值
1 1
2 8
3 1
尝试了几个命令和库,但无法管理它。仍然是新手,任何帮助将不胜感激!
谢谢
编辑:对不起,我不够清楚。我想为每个小于原始值的观察值分配一个新值(随机)。最后,新的价值总和将等于 10
解决方案
使用样本数据
dd <- read.table(text="ID Value
1 4
2 10
3 16", header=TRUE)
和dplyr
+tidyr
库,你可以做
library(dplyr)
library(tidyr)
dd %>%
mutate(ID=factor(ID)) %>%
uncount(Value) %>%
sample_n(10) %>%
count(ID, name = "Value", .drop=FALSE)
在这里,我们为每个 重复该行一次Value
,然后我们随机抽取 10 行,然后将它们重新计数。我们将 ID 转换为一个因子,以确保保留 0 个观测值的 ID。
推荐阅读
- c++ - 将指向 QML 字符串属性的指针传递给 C++
- arrays - 找到对以数组和 AVL 树组织的数据进行排序的最佳解决方案
- html - 如何在 xpath 中同时使用 (and) 和 (or)
- android - Firebase 函数响应返回 null
- r - 基于矩阵中的一列平均所有其他列
- amazon-redshift - 快速将IP地址映射到城市
- javascript - JQuery 似乎不适用于自动完成(Bootstrap + Django 网站)
- javascript - 为什么我的 foreach 需要永远加载
- ios - 隐藏出现在自定义键盘上方的 IOS 键盘建议栏
- c# - 如何从 C# 查询 VB6 IDE 的模式