我正在尝试重新采样数据帧的元素。我打开使用其他数据结构的话推荐,但我的理解是,DF将是混合字符串,数字更好,等数据帧中的采样元素
比方说,我的输入该数据帧:
16 x y z 2
11 a b c 1
.........
我想培养作为输出另一个数据结构(我取,另一个DF)是这样的:
16 x y z
16 x y z
11 a b c
.........
我想我的主要问题是要追加的内容的方式,这是对列DF [,1 :4]。
在此先感谢,p。
我正在尝试重新采样数据帧的元素。我打开使用其他数据结构的话推荐,但我的理解是,DF将是混合字符串,数字更好,等数据帧中的采样元素
比方说,我的输入该数据帧:
16 x y z 2
11 a b c 1
.........
我想培养作为输出另一个数据结构(我取,另一个DF)是这样的:
16 x y z
16 x y z
11 a b c
.........
我想我的主要问题是要追加的内容的方式,这是对列DF [,1 :4]。
在此先感谢,p。
这是从你的描述不清楚,但所需输出意味着你要根据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
如果你想更换从df
数据帧n
行示例:
df[sample(nrow(df), n, replace=TRUE), ]
假设你是从类似的开始:
mydf
# V1 V2 V3 V4 V5
# 1 16 x y z 2
# 2 11 a b c 1
然后,你可以只使用expandRows
从我的“splitstackshape”包,就像这样:
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
。
Whaaat,这很好 – 2014-10-31 17:06:13
@RichardScriven,它本质上是David的答案,还有一些其他的花里胡哨的......也许我应该CW ...... – A5C1D2H2I1M1N2O1R2T1 2014-10-31 17:10:34
现在我明白了。只是阅读源代码 – 2014-10-31 17:11:01
是的,那个聪明的组合完成了这个诀窍。它也可以通过for循环以不太优雅的方式完成。谢谢 – user3310782 2014-10-31 15:02:29