gpt4 book ai didi

r - 按R数据帧中数据 block 的长度生成随机数

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

我正在尝试模拟 n 次测量顺序,并查看测量顺序如何影响我的学习科目。为此,我正在尝试为数据框中的新列生成整数随机数。我有一个大数据框,我想在数据框中添加一列,该列根据块中的观察次数组成一个随机数。

数据示例(每行是一个观察值):

df <- data.frame(A=c(1,1,1,2,2,3,3,3,3), 
B=c("x","b","c","g","h","g","g","u","l"),
C=c(1,2,4,1,5,7,1,2,5))


A B C
1 1 x 1
2 1 b 2
3 1 c 4
4 2 g 1
5 2 h 5
6 3 g 7
7 3 g 1
8 3 u 2
9 3 l 5

我想做的是添加一个 D 列并根据每个块的长度生成随机整数。块在 A 列中定义。

结果应该是这样的:
df <- data.frame(A=c(1,1,1,2,2,3,3,3,3), 
B=c("x","b","c","g","h","g","g","u","l"),
C=c(1,2,4,1,5,7,1,2,5),
D=c(2,1,3,2,1,4,3,1,2))

> df
A B C D
1 1 x 1 2
2 1 b 2 1
3 1 c 4 3
4 2 g 1 2
5 2 h 5 1
6 3 g 7 4
7 3 g 1 3
8 3 u 2 1
9 3 l 5 2

我曾尝试使用 R:s sample()函数来生成随机数,但我的问题是根据块长度拆分数据并添加新列。任何帮助是极大的赞赏。

最佳答案

使用 ave 可以轻松完成

df$D <- ave( df$A, df$A, FUN = function(x) sample(length(x)) )

(你可以用 max() 或其他什么来替换 length(),但即使 A 不是与其块长度匹配的数字,长度也会起作用)

关于r - 按R数据帧中数据 block 的长度生成随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757889/

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