r - R中分组数据的条件格式
问题描述
UPRN Start.Date End.Date Disability
1 2006-12-20 17-NOV-17 Y
1 2006-12-20 17-NOV-17 N
2 1991-12-06 N
2 1991-12-06 N
3 1991-04-29 2015-04-21 N
3 2015-04-22 Y
4 2005-02-15 Y
4 2005-02-15 N
我有一个看起来像上面的数据集(但更大)。我想创建一个名为 Any_Disability 的新列。
我想这样做的方法是按 UPRN、Start.Date 和 End.Date 分组,如果该组中的任何行有残疾,那么两行的 Any_Disability 都会有一个“Y”。
我已经尝试过的是:
library(dplyr)
test3<-all_data%>%
group_by(UPRN, Start.Date, End.Date)%>%
mutate(Any_Disability = ifelse(Disability=="Y", "Y","N"))
但这不起作用,因为它给出了以下答案:
UPRN Start.Date End.Date Disability Any_Disability
1 2006-12-20 17-NOV-17 Y Y
1 2006-12-20 17-NOV-17 N N
2 1991-12-06 N N
2 1991-12-06 N N
3 1991-04-29 2015-04-21 N N
3 2015-04-22 Y Y
4 2005-02-15 Y Y
4 2005-02-15 N N
可重现的代码:
UPRN<-c(1,1,2,2,3,3,4,4)
Start.Date<-c("2006-12-20","2006-12-20", "1991-12-06","1991-12-06","1991-04-29", "2015-04-22","2005-02-15", "2005-02-15")
End.Date<-c("17-NOV-17", "17-NOV-17", "","", "2015-04-21", "", "", "")
Disability<-c("Y","N","N","N","N","Y","Y","N")
dataset <- data.frame(UPRN, Start.Date, End.Date, Disability)
解决方案
我们可以使用any
test3<-df%>%
group_by(UPRN, Start.Date)%>%
dplyr::mutate(Any_Disability = ifelse(any(Disability=="Y"), "Y","N"))
test3
# A tibble: 8 x 5
# Groups: UPRN, Start.Date [5]
UPRN Start.Date End.Date Disability Any_Disability
<int> <chr> <chr> <chr> <chr>
1 1 2006-12-20 17-NOV-17 Y Y
2 1 2006-12-20 17-NOV-17 N Y
3 2 1991-12-06 <NA> N N
4 2 1991-12-06 <NA> N N
5 3 1991-04-29 2015-04-21 N N
6 3 2015-04-22 <NA> Y Y
7 4 2005-02-15 <NA> Y Y
8 4 2005-02-15 <NA> N Y
推荐阅读
- spring-data-jpa - Spring JPA:JPQL查询返回空值
- django - Azure AD 重定向 URI 更改从 https 到 http
- python - 无法在 macbook pro M1 芯片上使用 pip install 安装任何库
- python - 如果发生异常,如何确保 try/except 循环不会执行所有操作?
- reactjs - React Typescript 没有给出类型检查错误
- go - vscode恐慌中的golang调试会话
- java - Android WorkManager 返回多个结果
- archlinux - AwesomeWM 删除 wibar 的空间
- ios - Swift 如何以编程方式将垂直 UIStackview / UIView 放入水平 UIStackview
- reactjs - 将变量作为 Ref 名称传递