r - 使用 dplyr 向列值添加抖动

标签 r dplyr jitter

我有以下格式的数据框。

   author year stages
1  A 1150      1
2  B 1200      1
3  C 1200      1
4  D 1300      1
5  D 1300      1
6  E 1390      3
7  F 1392      3
8  G 1400      3
9  G 1400      3
...

我想每年和作者组合稍微抖动一下。我希望同一年不同作者的文档被独特的值所扰乱。例如,作者 B 和 C 的 token 出现在同一年,但应该抖动不同的数量。来自同一作者的所有 token ,例如来自作者 G 在 1400 处的两个 token 应抖动相同的数量。

我尝试了以下方法,但为每一行都获得了唯一的抖动量。
data %>% group_by(author) %>% mutate(year = jitter(year, amount=.5))

此代码的输出如下。
   author     year stages
1  A 1150.400      1
2  B 1200.189      1
3  C 1200.222      1
4  D 1300.263      1
5  D 1299.788      1
6  E 1390.045      3
7  F 1391.964      3
8  G 1399.982      3
9  G 1399.783      3

但是,我想要以下内容,其中作者 G 的两个 token 都应移动相同的数量。关键的区别在于作者 G 的所有 token 都移动了相同的数量。
   author     year stages
1  A 1150.400      1
2  B 1200.189      1
3  C 1200.222      1
4  D 1300.263      1
5  D 1299.788      1
6  E 1390.045      3
7  F 1391.964      3
8  G 1399.982      3
9  G 1399.982      3

最佳答案

计算一种情况的抖动并将差异添加到所有情况:

dat %>% 
  group_by(author) %>% 
  mutate(year = year + (year[1] - jitter(year[1], amount=.5)))

#  author     year stages
#1      A 1149.720      1
#2      B 1200.385      1
#3      C 1199.888      1
#4      D 1299.589      1
#5      D 1299.589      1
#6      E 1389.866      3
#7      F 1392.225      3
#8      G 1400.147      3
#9      G 1400.147      3

关于r - 使用 dplyr 向列值添加抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090286/

相关文章:

mysql - 基于if条件的第二个表中的R sum列

r - ggplot 为分类 x r 指定垂直段的位置

R:如何相对于 x 轴散布(抖动)点?

R包kernlab安装问题

r - 精确日期的左连接值,如果缺失则查找前一个值

r - 评估字符串 : s = "start=70 end=200 step=5"

r - 在 R 中将多列转换为行

r - ggplot geom_jitter 落后于(多个)geom_boxplot

r - 如何将效果大小添加到 t 检验的 ggplot 条形图? (例如 Cohen 的 d 或 Hedges 的 g)

r - 如何使fig.width和out.width与knitr一致?