从向量中为data.table的每一行选择一个随机元素

时间:2016-09-05 16:49:00

标签: r data.table sample

我有一个名字的数据框。我有一个不同的食物矢量。我想从每个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)]但是它为每个人采样相同的食物项目(向量元素),而不是像上述示例那样的不同随机元素。

1 个答案:

答案 0 :(得分:3)

我们可以使用分组选项,然后执行sample

dt[, NextItem := sample(x, 1), by = Name]

或者您也可以使用.N代替by

执行此操作
dt[, NextItem := sample(x, .N, replace = TRUE)]