【发布时间】:2015-12-16 13:20:25
【问题描述】:
我根据另一列的功能对我的数据框的一列的所有值进行了抽样。为此,我使用tapply。
ex <- data.frame(
loc = c("1", "1", "2", "2", "2", "3", "3"),
sp = c("a", "b", "b", "c", "d", "a", "d"))
ex
all_sp <- unique(ex[, "sp"])
all_sp <- data.frame(all_sp)
ex$sp_random <- ""
sp_rand <- tapply(ex$sp_random, ex$loc, function(x)
base::sample(all_sp$all_sp, size = length(x), replace = FALSE, prob = NULL))
现在我想将sp_rand 列表放入原始ex 数据框中,但我不知道如何正确操作。
我发现的唯一方法是像这样重新排序ex 列:
ex <- ex[order(ex$loc), ]
ex$sp_random <- as.character(unlist(sp_rand))
ex
但是order 处理大数据帧时速度很慢。
【问题讨论】:
-
您的问题/问题到底是什么?
-
我希望在我的原始数据框
ex中得到sp_rand结果。但是tapply给了我一个列表,我找不到有效的方法把它放回原始数据框中。