我在其他地方看到了对我的问题的一些可能的讨论,但它要么没有解决,要么我无法完全理解答案是否适用,所以我正在创建一个新问题。
以下问题特别涉及这个主题,但尚未解决。使用pivot_longer将宽列收集成多个长列
获取以下示例数据。正如您所看到的,有一个唯一标识符变量,然后是其他 8 个变量。对于其他 8 个,您可以将它们分为两组:gpa 和percent_a。每个集合都有一个班级、小组、课程和部门值。
在我的实际数据中,我有大约 20 个不同的集合,它们都具有相同的结构,每个集合中有相同的四个描述符。
我想做的是执行类似于pivot_longer 的功能。除了将多个列组合成一组键和值列之外,我的数据中的每个唯一集(班级、组、课程、部门)将被分组到自己的键/值列中。
set.seed(101)
df <- data.frame(
id = 1:10,
class_gpa = rnorm(10, 0, 1),
course_gpa = rnorm(10, 0, 1),
group_gpa = rnorm(10, 0, 1),
dept_gpa = rnorm(10, 0, 1),
class_percent_a = rnorm(10, 0, 1),
course_percent_a = rnorm(10, 0, 1),
group_percent_a = rnorm(10, 0, 1),
dept_percent_a = rnorm(10, 0, 1)
)
因此,在这个示例中,假设我将所有 gpa 值分为两列(gpa_type 和 gpa_value),将 percent_a 值分为两列(percent_a_type、percent_a_value),那么最终我将只有 5 列:
id, gpa_type, gpa_value, percent_a_type, percent_a_value
有没有办法做到这一点?使用pivot_longer或其他方法。谢谢。