【发布时间】:2020-09-12 04:51:06
【问题描述】:
我有一个数据框,我想根据列中因子级别的分层偏好对其进行子集化。通过以下示例,我想展示每个级别的“ID”我只想选择一个“方法”。具体来说,如果可能保留 CACL,如果此级别不存在 CACL,则为“KCL”子集,如果不存在,则为“H2O”子集。
ID<-c(1,1,1,2,2,3)
method<-c("CACL","KCL","H2O","H2O","KCL","H2O")
df1<-data.frame(ID,method)
ID method
1 1 CACL
2 1 KCL
3 1 H2O
4 2 H2O
5 2 KCL
6 3 H2O
ID<-c(1,2,3)
method<-c("CACL","KCL","H2O")
df2<-data.frame(ID,method)
ID method
1 1 CACL
2 2 KCL
3 3 H2O
我通过选择关卡中的最小数量来完成类似的子集设置,但我无法调整它。我想知道我是否也应该在这里使用 ifelse?
#if present, choose rows containing "number" 2 instead of 1 (this column contained only the two numbers 1 and 2)
library(dplyr)
new<-df %>%
group_by(col1,col2,col3) %>%
summarize(number = ifelse(any(number > 1), min(number[number>1]),1))
dfnew<-merge(new,df,by=c("colxyz","number"),all.x=T)
【问题讨论】: