R 数据帧中的采样元素
我正在尝试对数据帧的元素进行重采样。如果推荐的话,我愿意使用其他数据结构,但我的理解是DF更适合组合字符串、数字等 假设我的输入是这个数据帧: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 =
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,这基本上是大卫的回答,还有一些其他的问题。。。。也许我应该把这个…我现在明白了。仅仅是阅读源代码就好像是人们要求的一件很普通的事情,所以我把它放在一个函数中:-)