【发布时间】:2021-09-07 14:24:24
【问题描述】:
我有以下问题。我有一个如下所示的数据框:
Date Period Subject Skill
1.1.2020 1 1 1
1.1.2020 1 2 3
1.1.2020 1 3 1
1.1.2020 1 4 3
1.1.2020 2 1 NA
1.1.2020 2 2 NA
1.1.2020 2 3 NA
1.1.2020 2 4 NA
1.1.2020 3 1 NA
1.1.2020 3 2 NA
1.1.2020 3 3 NA
1.1.2020 3 4 NA
1.1.2021 1 1 4
1.1.2021 1 2 4
1.1.2021 1 3 1
1.1.2021 1 4 3
1.1.2021 2 1 NA
1.1.2021 2 2 NA
1.1.2021 2 3 NA
1.1.2021 2 4 NA
1.1.2021 3 1 NA
1.1.2021 3 2 NA
1.1.2021 3 3 NA
1.1.2021 3 4 NA
我想将第 1 阶段的 Skill 值复制到第 2 阶段和第 3 阶段的同一受试者中应该是这样的:
Date Period Subject Skill
1.1.2020 1 1 1
1.1.2020 1 2 3
1.1.2020 1 3 1
1.1.2020 1 4 3
1.1.2020 2 1 1
1.1.2020 2 2 3
1.1.2020 2 3 1
1.1.2020 2 4 3
1.1.2020 3 1 1
1.1.2020 3 2 3
1.1.2020 3 3 1
1.1.2020 3 4 3
1.1.2021 1 1 4
1.1.2021 1 2 4
1.1.2021 1 3 1
1.1.2021 1 4 3
1.1.2021 2 1 4
1.1.2021 2 2 4
1.1.2021 2 3 1
1.1.2021 2 4 3
1.1.2021 3 1 4
1.1.2021 3 2 4
1.1.2021 3 3 1
1.1.2021 3 4 3
我看到了一个类似的线程How to copy value of a cell to other rows based on the value of other two columns?,但是每组只有一个缺失的 NA 值(每组的 NA 并不多)。使用zoo 包中的以下解决方案,我只需将每个 NA 替换为之前的最新非 NA。
x %>% group_by(Date, Subject) %>% mutate(Skill= na.locf(Skill))
简而言之,我想根据组内相同的主题 ID 将单元格的值与其他行匹配。
感谢您的所有回答!
【问题讨论】:
-
尝试用
fill代替mutate,比如fill(Skill)