If组包含值逻辑R
我试图根据一定的标准来确定年龄。例如,如果RNA不是空的,那么我希望将化身与当前RNA条目相关联的最小年龄相关联。但是,如果是NA,我想取DNA不为空的最小年龄。如果两者都为null,则删除 输入:If组包含值逻辑R,r,if-statement,dplyr,R,If Statement,Dplyr,我试图根据一定的标准来确定年龄。例如,如果RNA不是空的,那么我希望将化身与当前RNA条目相关联的最小年龄相关联。但是,如果是NA,我想取DNA不为空的最小年龄。如果两者都为null,则删除 输入: ID DNA RNA Age 2 NA SL43 22.2 2 SL333 NA 55.7 2 SL333 SL43 43.7 6 SL333 NA 10.3 6
ID DNA RNA Age
2 NA SL43 22.2
2 SL333 NA 55.7
2 SL333 SL43 43.7
6 SL333 NA 10.3
6 SL333 NA 65.6
6 NA NA 35.5
5 NA SL43 78.0
5 NA SL43 23.3
5 NA SL43 35.8
7 SL333 SL43 13.5
7 SL333 SL43 98.1
1 NA NA 55.6
期望输出
ID DNA RNA Age
2 NA SL43 22.2
2 SL333 SL43 43.7
6 SL333 NA 10.3
5 NA SL43 23.3
7 SL333 SL43 13.5
您可以尝试:
library(dplyr)
df %>%
group_by(ID, DNA, RNA) %>%
summarise(Age = min(Age)) %>%
ungroup() %>%
filter(!(is.na(DNA) & is.na(RNA)))
与输出不同的顺序,但这是否有效
library(dplyr)
my_data %>%
filter(!is.na(DNA) | !is.na(RNA)) %>%
group_by(ID, DNA) %>%
arrange(DNA, -Age) %>%
slice(n())
ID DNA RNA Age
<int> <chr> <chr> <dbl>
1 2 SL333 SL43 43.7
2 2 NA SL43 22.2
3 5 NA SL43 23.3
4 6 SL333 NA 10.3
5 7 SL333 SL43 13.5
库(dplyr)
我的_数据%>%
过滤器(!is.na(DNA)|!is.na(RNA))%>%
分组依据(ID,DNA)%>%
排列(DNA,-年龄)%>%
切片(n())
ID-DNA-RNA年龄
1 2 SL333 SL43.7
2 NA SL43 22.2
3 5 NA SL43 23.3
4 6 SL333 NA 10.3
5 7 SL333 SL43 13.5