随机采样数据集以减少数据集中的值
randomly sampling of dataset to decrease the values in the dataset
我目前正在尝试根据给定的总和随机减少列中的值。
比如主数据是这样的;
ID 值
1 4
2 10
3 16
在运行代码之后,Value的总和应该是10,这需要随机完成(每个成员的减少应该随机选择)
ID 值
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。
我目前正在尝试根据给定的总和随机减少列中的值。 比如主数据是这样的;
ID 值
1 4
2 10
3 16
在运行代码之后,Value的总和应该是10,这需要随机完成(每个成员的减少应该随机选择)
ID 值
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。