gpt4 book ai didi

r - 同样地向数据框添加新变量

转载 作者:行者123 更新时间:2023-12-04 12:37:51 24 4
gpt4 key购买 nike

使用 RStudio,我有这个:

GROUP NUM
A 45
A 78
A 79
B 45
B 47
B 99
C 28
C 78
C 54

我想添加一个名为 AGENT 的新变量,它是:

AGENT=c("John", "Maria", "Pamela")

但问题是,我希望我的每个 Agent 根据 ID 平均分布在初始数据帧中。基本上,我想要这个:

GROUP NUM AGENT
A 45 John
A 78 Maria
A 79 Pamela
B 45 John
B 47 Maria
B 99 Pamela
C 28 John
C 78 Maria
C 54 Pamela

我这里的例子是基本的,因为我有和代理一样多的组。但是在我的例子中,我可能每个字母有 70 个(70 个 A、70 个 B 和 70 个 C),但仍然只有 3 个代理。我仍然希望它们尽可能平均地传播....

例如,如果我有 6 A,我会:

GROUP NUM AGENT
A 45 John
A 78 Maria
A 79 Pamela
A 48 John
A 97 Maria
A 59 Pamela
...

如果我有 7 个,那么第 7 个将被随机分配,或者只是列表中的下一个。

有什么想法吗?我一直在为此折磨自己。提前致谢! :P

最佳答案

如果“or just the next on the list.”适用于组较大时的任何溢出,您可以利用向量回收并在一次赋值中完成:

dat$newvar <- with(dat, ave(1:nrow(dat), GROUP, FUN=function(x) AGENT) )
dat
# GROUP NUM newvar
#1 A 45 John
#2 A 78 Maria
#3 A 79 Pamela
#4 B 45 John
#5 B 47 Maria
#6 B 99 Pamela
#7 C 28 John
#8 C 78 Maria
#9 C 54 Pamela

当组与 AGENT 的大小不完全匹配时,请忽略您可能收到的任何警告

data.table 也可以以类似的方式使用:

library(data.table)
setDT(dat)
dat[, newvar2 := AGENT, by=GROUP]

关于r - 同样地向数据框添加新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40855448/

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