【发布时间】:2020-06-24 00:24:23
【问题描述】:
我有一个很长的数据集,其中包含跨多个学期的学生成绩和课程。每个学生都有许多 NA 和许多行。我希望每个学生有一个长行来填写这些 NA,但保持相同的列名。
这是一个示例:
library(tidyverse)
sample <- tibble(student = c("Corey", "Corey", "Sibley", "Sibley"),
fall_course_1 = c("Math", NA, "Science", NA),
fall_course_2 = c(NA, "English", NA, NA),
fall_grade_1 = c(90, NA, 98, NA),
fall_grade_2 = c(NA, 60, NA, NA))
这是我想要的样子:
library(tidyverse)
answer <- tibble(student = c("Corey", "Sibley"),
fall_course_1 = c("Math", "Science"),
fall_course_2 = c("English", NA),
fall_grade_1 = c(90, 98),
fall_grade_2 = c(60, NA))
有些学期,有些学生上很多课,有些只上一门。我尝试过使用 coalesce(),但我无法弄清楚。任何帮助将不胜感激!
【问题讨论】:
-
你试过什么没用?
-
@camille,我尝试按学生列分组并使用 coalesce()。然后我尝试了这个链接上的建议,但它跨越了列,而不是向下:community.rstudio.com/t/…。
-
与其继续斗争,不如将数据集重塑为长格式,每个等级都是一行。这将使这些扭曲变得不必要。见stackoverflow.com/questions/2185252/…
-
我应该更具体一些。将您的代码尝试添加到问题中,这样人们就可以看到您正在使用的逻辑而不是建议您已经尝试过的事情
标签: r reshape tidyr data-cleaning coalesce