我有一个数据框架,名字、课程、课程和完成情况都很相似。
name <- c("John", "John", "John", "Sam", "Sam")
course <- c("Driving", "Driving", "Driving", "Cycling", "Cycling")
lesson <- c("Gears", "Parking", "Overtaking", "Balancing", "Turning")
completion <- c(1, 0, 1, 1, 1)
df_school <- data.frame(name, course, lesson, completion)如果学生没有完成任何课程,我想将所有完成更改为0。输出应为:
name <- c("John", "John", "John", "Sam", "Sam")
course <- c("Driving", "Driving", "Driving", "Cycling", "Cycling")
lesson <- c("Gears", "Parking", "Overtaking", "Balancing", "Turning")
completion <- c(0, 0, 0, 1, 1)
df_completed <- data.frame(name, course, lesson, completion)谢谢
发布于 2021-10-05 07:51:59
作者:dplyr
df_school %>%
group_by(name) %>%
mutate(completion = +all(completion == 1))
name course lesson completion
<chr> <chr> <chr> <dbl>
1 John Driving Gears 0
2 John Driving Parking 0
3 John Driving Overtaking 0
4 Sam Cycling Balancing 1
5 Sam Cycling Turning 1发布于 2021-10-05 07:56:04
使用dplyr
library(dplyr)
df_school %>% group_by(name) %>%
mutate(completion=+(length(completion) == sum(completion)))输出:
name course lesson completion
<chr> <chr> <chr> <int>
1 John Driving Gears 0
2 John Driving Parking 0
3 John Driving Overtaking 0
4 Sam Cycling Balancing 1
5 Sam Cycling Turning 1https://stackoverflow.com/questions/69446641
复制相似问题