我有一些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>1 44 1 112 2 237 1 237 2 3 40 1 3 9 2 表类>
这里有一个选项-创建一个频率计数列'插曲',如果值为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'列,然后使用complete
和fill
df %>%
group_by(episode) %>%
mutate(time = row_number()) %>%
ungroup %>%
complete(episode, time) %>%
fill(score)