gpt4 book ai didi

r - 如何按行和列随机化(或排列)数据帧?

转载 作者:行者123 更新时间:2023-12-03 05:01:12 25 4
gpt4 key购买 nike

我有一个像这样的数据框(df1)。

     f1   f2   f3   f4   f5
d1 1 0 1 1 1
d2 1 0 0 1 0
d3 0 0 0 1 1
d4 0 1 0 0 1

d1...d4 列是行名,f1...f5 行是列名。

为了执行示例(df1),我得到了一个与 df1 相同的计数为 1 的新数据帧。因此,整个数据帧的计数 1 是保守的,而不是每行或每列的计数。

是否可以按行或列进行随机化?

我想对每列按列随机化 df1,即每列中 1 的数量保持不变。并且每列至少需要更改一次。例如,我可能有一个像这样的随机 df2:(请注意,每列中 1 的计数保持不变,但每行中 1 的计数不同。

     f1   f2   f3   f4   f5
d1 1 0 0 0 1
d2 0 1 0 1 1
d3 1 0 0 1 1
d4 0 0 1 1 0

同样,我也想对每行的 df1 逐行进行随机化,即第 1 行。每行中的 1 保持不变,并且每行都需要更改(但更改的条目数可能不同)。例如,随机 df3 可能是这样的:

     f1   f2   f3   f4   f5
d1 0 1 1 1 1 <- two entries are different
d2 0 0 1 0 1 <- four entries are different
d3 1 0 0 0 1 <- two entries are different
d4 0 0 1 0 1 <- two entries are different
PS。非常感谢 Gavin Simpson、Joris Meys 和 Chase 对我之前关于随机化两列的问题的帮助。

最佳答案

给定 R data.frame:

> df1
a b c
1 1 1 0
2 1 0 0
3 0 1 0
4 0 0 0

按行随机播放:

> df2 <- df1[sample(nrow(df1)),]
> df2
a b c
3 0 1 0
4 0 0 0
2 1 0 0
1 1 1 0

默认情况下,sample() 随机重新排序作为第一个参数传递的元素。这意味着默认大小是传递数组的大小。将参数 replace=FALSE(默认值)传递给 sample(...) 可确保在不进行替换的情况下完成采样,从而实现按行洗牌。

按列随机播放:

> df3 <- df1[,sample(ncol(df1))]
> df3
c a b
1 0 1 1
2 0 1 0
3 0 0 1
4 0 0 0

关于r - 如何按行和列随机化(或排列)数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6422273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com