【发布时间】:2020-11-16 23:27:52
【问题描述】:
我正在处理一个非常大的数据集,因此为了简单起见,我将使用示例数据集。这是示例数据集:
df <- data.frame(Class = rep(c("Class A", "Class B"), each = 6),
Student = rep(c("Tom", "Ana", "Sam", "Ivy"), each = 3),
Subject = rep(c("Maths", "English", "Science"), times = 4),
Score = c(80, 75, 72, 86, 78, 80, 75, 77, 84, 81, 79, 88)
)
Class Student Subject Score
1 Class A Tom Maths 80
2 Class A Tom English 75
3 Class A Tom Science 72
4 Class A Ana Maths 86
5 Class A Ana English 78
6 Class A Ana Science 80
7 Class B Sam Maths 75
8 Class B Sam English 77
9 Class B Sam Science 84
10 Class B Ivy Maths 81
11 Class B Ivy English 79
12 Class B Ivy Science 88
如何使用mutate() 添加一个名为new_block 的新列,该列在出现不同学生数据的每一行显示1,否则0?本质上,我希望此列的第 1、4、7、10 行有 1。
如果可能,添加另一个名为 last_record 的列也很好,它为每个学生的最后一行记录显示 1,如果不是,则为 0 - 所以 1 用于第 3、6 行, 9, 12.
另外,是否可以使用ifelse() 创建这些列?
非常感谢任何帮助/建议 :)
【问题讨论】:
-
这不能回答你的问题,但你能不能只按
Student分组并得到第一行和最后一行?不过,这取决于您使用它的目的。 -
如果您还不知道这一点,以下解决方案中使用的
case_when允许您向量化多个ifelse语句。这就是为什么您没有看到明确使用ifelse()的原因。
标签: r dataframe tidyverse dplyr