r - 每组随机
问题描述
我正在尝试使用 R 随机化数据框中的数字向量。我的数据看起来像这样:
user click
1025 0
1025 1
1025 0
1025 0
1025 0
1025 0
1025 1
1025 0
1025 0
1025 0
1025 0
14639 1
14639 0
14639 0
14639 1
11605 0
11605 0
14605 1
在数据中,一些用户出现的频率高于其他用户。我现在想更改每个用户 ID。假设有 100 个唯一用户 ID。最后,我想拥有 100 个不同的唯一用户 ID。
我试过dplyr:
data %>% group_by(user) %>% mutate(anon = rep(sample(length(unique(data$user)), 1, replace = F)), n())
但是,这不起作用,因为采样是为每个用户单独进行的;忽略其他用户。结果,一些用户最终拥有相同的新用户 ID。
有人可以告诉我如何 - 随机 - 为数据框中的每个人创建一个新的用户 ID(不重复)吗?
解决方案
我将通过首先生成一些用户 ID 来解决这个问题,然后创建一个将现有用户 ID 与新用户 ID 相关联的临时 tibble,然后将您以前的数据与此表连接起来:
# Randomly generate some user IDs
new_user_ids = shuffle(seq(1, length(unique(df$user))))
# Join
data %>%
left_join(tibble(user = unique(df$user), new.user = new_user_ids)) %>%
mutate(user = new.user) %>% select(-new.user)
这给出了以下结果,例如:
user click
<int> <dbl>
1 3 0
2 3 1
3 3 0
4 3 0
5 3 0
6 3 0
7 3 1
8 3 0
9 3 0
10 3 0
11 3 0
12 2 1
13 2 0
14 2 0
15 2 1
16 4 0
17 4 0
18 1 1
推荐阅读
- android - 如何在颤动的角落添加图像?
- objective-c - 为什么我的完成处理程序永远不会被调用?
- r - R Shiny验证列号输入文件
- php - 多个用户连接到具有不同数据库的服务器
- safari - 为 ios 设备的特定元素截屏 - safari 浏览器
- c# - 在锯齿状数组中,如何在顶部添加新元素,即在第一个位置并删除最后一个元素
- java - 为什么 Java 中的 LocaleServiceProvider 默认禁用 SPI?
- c# - 键入“?”时如何阻止 Resharper 删除 [CanBeNull] 在引用类型名称的末尾?
- php - 带有单引号的用户输入不适用于准备好的 sql
- python - Rasa NLU 安装问题 - 不兼容的版本