我有一个名字的数据框。我有一个不同的食物矢量。我想从每个Name中随机选择一个元素,以便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)]
但是它为每个人采样相同的食物项目(向量元素),而不是像上述示例那样的不同随机元素。
答案 0 :(得分:3)
我们可以使用分组选项,然后执行sample
dt[, NextItem := sample(x, 1), by = Name]
或者您也可以使用.N
代替by
dt[, NextItem := sample(x, .N, replace = TRUE)]