r语言 - 如果该组只有一条记录,则复制该行



我有一些pre-post数据(在R中),其中一些个体只有时间1的值,如episode "2":

episode <- c('1','1','2','3','3')
score <- c('44','12','37','40','9')
df <- data.frame(episode,score)

对于所有只有"前置"的记录数据(每集1分),我想使用R (dplyr首选)复制该记录,然后为所有记录指出哪一个是pre,哪一个是post。所以最终结果应该是这样的:

<表类>插曲得分时间tbody><<tr>14411122237123723401392

这里有一个选项-创建一个频率计数列'插曲',如果值为1,然后在逻辑(n == 1)上添加1,并复制uncount

library(dplyr)
library(tidyr)
df %>% 
add_count(episode) %>% 
mutate(n = (n == 1) + 1) %>%
uncount(n) %>%
group_by(episode) %>%
mutate(time = row_number()) %>%
ungroup

与产出

# A tibble: 6 × 3
episode score  time
<chr>   <chr> <int>
1 1       44        1
2 1       12        2
3 2       37        1
4 2       37        2
5 3       40        1
6 3       9         2

或者先创建'time'列,然后使用completefill

df %>% 
group_by(episode) %>%
mutate(time = row_number()) %>% 
ungroup %>% 
complete(episode, time) %>%
fill(score)

最新更新