r - 对每个 id 重复前两行两次
问题描述
我想为每个 id 重复前两行两次。我不知道该怎么做。有人有建议吗?
id <- rep(1:4,each=6)
scored <- c(12,13,NA,NA,NA,NA,14,20,NA,NA,NA,NA,23,56,NA,NA,NA,NA, 45,78,NA,NA,NA,NA)
df <- data.frame(id,scored)
df
id scored
1 1 12
2 1 13
3 1 NA
4 1 NA
5 1 NA
6 1 NA
7 2 14
8 2 20
9 2 NA
10 2 NA
11 2 NA
12 2 NA
13 3 23
14 3 56
15 3 NA
16 3 NA
17 3 NA
18 3 NA
19 4 45
20 4 78
21 4 NA
22 4 NA
23 4 NA
24 4 NA
>
我希望它看起来像:
df
id score
1 1 12
2 1 13
3 1 12
4 1 13
5 1 12
6 1 13
7 2 14
8 2 20
9 2 14
10 2 20
11 2 14
12 2 20
13 3 23
14 3 56
15 3 23
16 3 56
17 3 23
18 3 56
19 4 45
20 4 78
21 4 45
22 4 78
23 4 45
24 4 78
>
..................................................... ..................................................... .....................................................
解决方案
我们可以rep
对 'scored' 的非 NA 元素进行分组
library(dplyr)
df %>%
group_by(id) %>%
mutate(scored = rep(scored[!is.na(scored)], length.out = n()))
# A tibble: 24 x 2
# Groups: id [4]
# id scored
# <int> <dbl>
# 1 1 12
# 2 1 13
# 3 1 12
# 4 1 13
# 5 1 12
# 6 1 13
# 7 2 14
# 8 2 20
# 9 2 14
#10 2 20
# … with 14 more rows
推荐阅读
- c++ - 是否可以在信号处理程序中设置承诺?
- java - Android - 无法使用 NotificationCompat.Builder 新构造函数(上下文、字符串)
- sql - Postgres UPDATE 使用 SELECT whit INNER JOIN 多个表
- java - 验证图像是否显示与网页上加载之间的区别?
- c# - 如何创建和迭代方法组列表
- css - 使用 React 过渡组保持元素对齐
- javascript - 我在 JavaScript 中的自定义 setInterval() 函数中的问题
- javascript - 数组减少在javascript中不起作用
- python - 在 Blender 中创建拼图球体的方法是什么?
- android - 桌面文件的自定义通知到 Android 手机