从向量中为 data.table 的每一行选择一个随机元素
Pick one random element from a vector for each row of a data.table
我有一个名字数据框。我有不同食物的载体。我想为每个名称从该向量中随机选择一个元素,以便 data.table 如下所示。
x<- c("apple","pepsi","rice","coke","banana","butter","bread")
library(data.table)
dt <- fread('
Name NextItem
John rice
Logan butter
Sarah bread
Vinny rice
')
我想要带替换的采样。我试过了
dt[,NextItem:= sample(x,1)]
但它为每个人采样相同的食物(矢量元素),而不是像上述示例那样的不同随机元素。
我们可以使用 group by 选项然后做 sample
dt[, NextItem := sample(x, 1), by = Name]
或者您也可以使用 .N
而不是 by
dt[, NextItem := sample(x, .N, replace = TRUE)]
我有一个名字数据框。我有不同食物的载体。我想为每个名称从该向量中随机选择一个元素,以便 data.table 如下所示。
x<- c("apple","pepsi","rice","coke","banana","butter","bread")
library(data.table)
dt <- fread('
Name NextItem
John rice
Logan butter
Sarah bread
Vinny rice
')
我想要带替换的采样。我试过了
dt[,NextItem:= sample(x,1)]
但它为每个人采样相同的食物(矢量元素),而不是像上述示例那样的不同随机元素。
我们可以使用 group by 选项然后做 sample
dt[, NextItem := sample(x, 1), by = Name]
或者您也可以使用 .N
而不是 by
dt[, NextItem := sample(x, .N, replace = TRUE)]