【发布时间】:2021-07-17 00:17:00
【问题描述】:
我确信有一个答案,但我找不到它。我尝试了几种使用几个 R 函数的解决方案,包括 reshape、gather 和 pivot_longer。我的问题是数据来自具有多列的电子表格。我将尝试代表电子表格的一个样本:
| FullName | SOCW725 | SOCW748 | SOCW799 | Average | SOCW725 | SOCW752 | SOCW782 | Average | SOCW725 | SOCW748 | SOCW752 | Average |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Beavis B | 3.5 | 3.22 | 2.56 | 3.07 | 2.33 | 3.33 | 4.2 | 3.5 | 3.33 | 3.23 | No Data | 3.00 |
| El Guapo | 3.25 | 3.02 | 2.75 | 3.18 | 3.33 | 4.33 | 4.15 | 2.25 | 2.67 | 3.42 | 4 | 2.44 |
实际的数据文件要宽得多。每组三门课程(例如 SOCW725、SOCW748、SOCW799)代表一种能力,共有九种能力。我把它们放在了桌面上,因为我相信一旦我弄清楚了(我希望)我就可以将它们插入数据框中。所以,我试图将 pivot_longer 分成三列(添加 CompetencyID 时将为 4)。这些列是:名称、课程和评分。我不需要平均值,因为我可以重新计算它。以下是我正在使用的代码示例:
d1 <- pivot_longer(my_data,
cols = !1,
names_to = "Course",
values_to = "Ratings",
)
这可行,但重复的行名(即课程名称)有一个 .后跟一个数字(例如 SOCW725.1、SOCW725.2 等)。我明白为什么,但我不知道如何摆脱它。我大概可以弄清楚如何从结果中编辑 .#,但想用 dplyr::pivot_table 找到更快的方法。
提前谢谢你。
【问题讨论】: