Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 对每个id重复前两行两次_R - Fatal编程技术网

R 对每个id重复前两行两次

R 对每个id重复前两行两次,r,R,我想对每个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

我想对每个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
> 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ..................................................
我们可以通过
rep
对“得分”的非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
库(dplyr)
df%>%
分组依据(id)%>%
突变(scored=rep(scored[!is.na(scored)],length.out=n())
#一个tibble:24x2
#组别:id[4]
#我得分了
#     
# 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
#…还有14行

@akrun它工作得很好,谢谢!!
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