R 数据帧中的采样元素

R 数据帧中的采样元素,r,dataframe,sample,R,Dataframe,Sample,我正在尝试对数据帧的元素进行重采样。如果推荐的话,我愿意使用其他数据结构,但我的理解是DF更适合组合字符串、数字等 假设我的输入是这个数据帧: 16 x y z 2 11 a b c 1 ......... 我想作为输出构建另一个数据结构(我采用另一个df),如下所示: 16 x y z 16 x y z 11 a b c ......... library(splitstackshape) expandRows(mydf, count =

我正在尝试对数据帧的元素进行重采样。如果推荐的话,我愿意使用其他数据结构,但我的理解是DF更适合组合字符串、数字等

假设我的输入是这个数据帧:

16  x  y  z  2
11  a  b  c  1
.........
我想作为输出构建另一个数据结构(我采用另一个df),如下所示:

16  x   y   z
16  x   y   z
11  a   b   c  
.........
library(splitstackshape)
expandRows(mydf, count = "V5")
#     V1 V2 V3 V4
# 1   16  x  y  z
# 1.1 16  x  y  z
# 2   11  a  b  c
我想我的主要问题是如何附加内容,它位于df[,1:4]列


提前感谢,p.

如果您想使用
n
行替换
df
数据框中的行进行采样:

16  x  y  z  2
11  a  b  c  1
.........

df[sample(nrow(df),n,replace=TRUE),]

如果要使用数据框中的替换
n
行进行采样:

16  x  y  z  2
11  a  b  c  1
.........

df[示例(nrow(df),n,replace=TRUE),]

从您的描述中不清楚,但您所需的输出意味着您希望根据列
5
复制列
1:4
,这应该可以完成此工作

df[rep(seq_len(nrow(df)), df[, 5]), -5]
#     V1 V2 V3 V4
# 1   16  x  y  z
# 1.1 16  x  y  z
# 2   11  a  b  c

从您的描述中不清楚,但所需的输出意味着您希望复制列
1:4
,根据列
5
,这应该可以完成工作

df[rep(seq_len(nrow(df)), df[, 5]), -5]
#     V1 V2 V3 V4
# 1   16  x  y  z
# 1.1 16  x  y  z
# 2   11  a  b  c

假设您从以下内容开始:

mydf
#   V1 V2 V3 V4 V5
# 1 16  x  y  z  2
# 2 11  a  b  c  1
然后,您可以使用我的“splitstackshape”包中的
expandRows
,如下所示:

16  x   y   z
16  x   y   z
11  a   b   c  
.........
library(splitstackshape)
expandRows(mydf, count = "V5")
#     V1 V2 V3 V4
# 1   16  x  y  z
# 1.1 16  x  y  z
# 2   11  a  b  c


默认情况下,该函数假设您正在基于现有列扩展数据集,但您可以像添加
count
参数一样轻松地添加数字向量,并设置
count.is.col=FALSE

假设您从以下内容开始:

mydf
#   V1 V2 V3 V4 V5
# 1 16  x  y  z  2
# 2 11  a  b  c  1
然后,您可以使用我的“splitstackshape”包中的
expandRows
,如下所示:

16  x   y   z
16  x   y   z
11  a   b   c  
.........
library(splitstackshape)
expandRows(mydf, count = "V5")
#     V1 V2 V3 V4
# 1   16  x  y  z
# 1.1 16  x  y  z
# 2   11  a  b  c


默认情况下,该函数假定您正在基于现有列扩展数据集,但您可以像添加
count
参数一样轻松地添加数字向量,并设置
count.is.col=FALSE

是的,这种巧妙的组合起到了作用。也可以使用for循环以不那么优雅的方式完成。谢谢你是的,那巧妙的组合成功了。也可以使用for循环以不那么优雅的方式完成。谢谢,这是什么nice@RichardScriven,这基本上是大卫的回答,还有一些其他的问题。。。。也许我应该把这个…我现在明白了。仅仅阅读源代码它似乎是人们要求的一件很普通的事情,所以我把它放在一个函数中:-)什么,这是什么nice@RichardScriven,这基本上是大卫的回答,还有一些其他的问题。。。。也许我应该把这个…我现在明白了。仅仅是阅读源代码就好像是人们要求的一件很普通的事情,所以我把它放在一个函数中:-)