跨数据帧内因子的所有级别选择n个随机采样的连续行

牙买加的

在对先前提出的问题进行了出色的回答后-在数据帧内跨因子的所有级别选择n个随机行-我一直在考虑扩展此问题。

先前的问题试图从特定因子的每个级别随机采样n行/观测值,并将所有信息组合到一个新的数据帧中。

但是,这种随机采样对于某些类型的数据可能不是最佳的。在这里,我想再次针对特定因子的每个级别选择n行/观察值。这里的主要区别在于,从特定因子的每个级别选择的行/观察值应该是连续的

这是一个示例数据集:

id<-sample(1:20, 100, replace = TRUE)
dat<-as.data.frame(id)
color <-  c("blue", "red", "yellow", "pink", "green", "orange", "white", "brown")
dat$colors<- sample(color, 100, replace = TRUE)

要添加到此示例的数据集是每个观测值的时间戳。这些将构成我希望采样的顺序。我正在使用此线程中建议的功能-有效地生成两个日期之间的时间和日期的随机样本-为此:

randomts <- function(N, st="2013/12/09", et="2013/12/14") {
st <- as.POSIXct(as.Date(st))
et <- as.POSIXct(as.Date(et))
dt <- as.numeric(difftime(et,st,unit="sec"))
ev <- sort(runif(N, 0, dt))
rt <- st + ev
}

dat$ts<-randomts(100)

我不确定这是否有必要,但是也可以添加一个给出“ day”的变量。这是我希望从各个级别进行抽样的因素。

temp<-strsplit(as.character(dat$ts), " ")
mat<-matrix(unlist(temp), ncol=2, byrow=TRUE)
df<-as.data.frame(mat)
colnames(df)<-c("date", "time")
dat<-cbind(df, dat)

mindate<-as.Date(min(dat$date))
dates<-as.Date(dat$date)
x<-as.numeric(dates-mindate)
x<-x+1 
dat$day<-x  
as.factor(dat$day) #in this example data there are 6 levels to 'day'.

#EDIT there may be 5 levels to day - depends on how data randomly generated by function 

原始帖子无法准确计算出日期。这虽然不完美,但更好。似乎还可以,但是第一天是day = 0,那么它希望是day = 1

总而言之,问题是这样的。我想创建一个新的数据框,其中包含例如从数据框“ dat”的因子日的每个级别中随机采样的5个连续观察值(即每天采集5个随机连续观察值)。因此,新数据框将具有30个观测值。另一个警告是,如果我想采样例如20个连续的观测值,而某个特定级别仅包含15个观测值,则所有15个观测值都将返回并且没有替代值。

我尝试使用seq_along解决此问题。我似乎能够一次将其用于一个变量-例如,如果从颜色采样:

x <-  sample(seq_along(dat$colors),1)
dat$colors[x:(x+4)]

这将从可变颜色中随机抽取5种连续颜色的列表。

我很难将其应用于当前的问题。我试图修改我上一个问题的一些答案,在一个数据帧内的因素的所有级别选择n个随机行-但似乎无法计算出seq_along的正确位置。

弗里克先生

这应该假设您data.frame按日期对颜色进行采样N是您想要每种颜色的数量。返回值keepTRUE针对每个颜色组的运行。

N <- 5
keep <- with(dat, ave(rep(T, nrow(dat)), colors, FUN=function(x) {
    start <- sample.int(max(length(x)-N,1),1)
    end <- min(length(x), start+N-1)
    r <- rep(c(F,T,F), c(start-1, end-start+1, length(x)-end)) 
}))
dat[keep, ]

此方法不考虑任何day值。它只是找到随机N观察结果。如果N某个特定类别的观察数少于该类别,则每个类别只会返回较少的数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据帧中每组采样n个随机行

来自分类Dev

采样数据帧,保持所有水平的因子变量

来自分类Dev

基于R中列内因子级别的层次偏好的子集数据帧

来自分类Dev

跨任意间隔选择n个随机行

来自分类Dev

按因子级别索引重复的数据帧行

来自分类Dev

使用dplyr为因子的每个级别采样不同数量的随机行

来自分类Dev

熊猫数据帧的随机采样(行和列)

来自分类Dev

基于因子水平的所有组合的数据帧的R行子集

来自分类Dev

输出数据框中所有因子的级别数

来自分类Dev

按因子跨数据帧应用lm

来自分类Dev

从数据场的n列中为每一行随机选择k个值,并将它们存储到同一数据帧的k列中

来自分类Dev

将行连续重采样到数据帧的列中(用于时间序列分析)

来自分类Dev

将R数据帧除以n个因子

来自分类Dev

重命名一个因子的多个级别,所有级别都包含相同的单词

来自分类Dev

熊猫:两个日期之间选择从熊猫数据帧的所有数据

来自分类Dev

基于计数的数据帧中所有因子变量的折叠因子水平

来自分类Dev

Summary和str没有提供数据帧的因子和级别信息

来自分类Dev

如何为数据表中的每个因子选择n个第一行?

来自分类Dev

选择数据帧的随机部分

来自分类Dev

随机矩阵所有行的快速随机加权选择

来自分类Dev

大熊猫选择的条件的行的所有数据帧列

来自分类Dev

Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

来自分类Dev

选择与在dplyr中随机选择的条件匹配的所有行

来自分类Dev

是否有将大数据帧拆分为大小相等的n个较小数据帧(按行)并具有n + 1个较小大小的数据帧的功能?

来自分类Dev

在R中设置数据帧的行时的无效因子级别

来自分类Dev

按因子级别对数据帧进行子集

来自分类Dev

反向排序后,数据帧中的因子级别变为NA

来自分类Dev

按因子级别数对R数据帧进行排序

来自分类Dev

R因子变量的堆栈级别到数据帧中

Related 相关文章

  1. 1

    在数据帧中每组采样n个随机行

  2. 2

    采样数据帧,保持所有水平的因子变量

  3. 3

    基于R中列内因子级别的层次偏好的子集数据帧

  4. 4

    跨任意间隔选择n个随机行

  5. 5

    按因子级别索引重复的数据帧行

  6. 6

    使用dplyr为因子的每个级别采样不同数量的随机行

  7. 7

    熊猫数据帧的随机采样(行和列)

  8. 8

    基于因子水平的所有组合的数据帧的R行子集

  9. 9

    输出数据框中所有因子的级别数

  10. 10

    按因子跨数据帧应用lm

  11. 11

    从数据场的n列中为每一行随机选择k个值,并将它们存储到同一数据帧的k列中

  12. 12

    将行连续重采样到数据帧的列中(用于时间序列分析)

  13. 13

    将R数据帧除以n个因子

  14. 14

    重命名一个因子的多个级别,所有级别都包含相同的单词

  15. 15

    熊猫:两个日期之间选择从熊猫数据帧的所有数据

  16. 16

    基于计数的数据帧中所有因子变量的折叠因子水平

  17. 17

    Summary和str没有提供数据帧的因子和级别信息

  18. 18

    如何为数据表中的每个因子选择n个第一行?

  19. 19

    选择数据帧的随机部分

  20. 20

    随机矩阵所有行的快速随机加权选择

  21. 21

    大熊猫选择的条件的行的所有数据帧列

  22. 22

    Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

  23. 23

    选择与在dplyr中随机选择的条件匹配的所有行

  24. 24

    是否有将大数据帧拆分为大小相等的n个较小数据帧(按行)并具有n + 1个较小大小的数据帧的功能?

  25. 25

    在R中设置数据帧的行时的无效因子级别

  26. 26

    按因子级别对数据帧进行子集

  27. 27

    反向排序后,数据帧中的因子级别变为NA

  28. 28

    按因子级别数对R数据帧进行排序

  29. 29

    R因子变量的堆栈级别到数据帧中

热门标签

归档