【发布时间】:2021-10-31 12:27:43
【问题描述】:
我的任务是识别数据集中的唯一试验 (1,2,3,...)。这是一个例子:
"source","ID","cultivar","design"
"PDMR_vol_12","CF027","Ambassador","RCBD"
"PDMR_vol_12","CF027","Ambassador","RCBD"
"PDMR_vol_12","CF027","Ambassador","RCBD"
"PDMR_vol_12","CF027","Ambassador","RCBD"
"PDMR_vol_7","CF026","ASG2000","RCBD"
"PDMR_vol_7","CF026","ASG2000","RCBD"
"PDMR_vol_7","CF026","ASG2000","RCBD"
"PDMR_vol_7","CF026","P26R61","RCBD"
"PDMR_vol_7","CF026","P26R61","RCBD"
"PDMR_vol_7","CF026","P26R61","RCBD"
"PDMR_vol_4","CF011","Roane","SP"
"PDMR_vol_4","CF011","Roane","SP"
"PDMR_vol_4","CF011","Tomahawk","SP"
"PDMR_vol_4","CF011","Tomahawk","SP"
"PDMR_vol_4","CF011","Everest","SP"
"PDMR_vol_4","CF011","Everest","SP"
条件列是:
unique_trials_RCBD<- ("source","ID","cultivar","design")
unique_trials_SP<-unique_trials_RCBD[-3]
使用基于几列的条件 group_by,我们几乎可以得到正确的结果,只是它没有正确地将 (PDMR_vol_7 CF026) 识别为两次试验。
doAGroupBy <- function(data, some_condition) {
if (some_condition == TRUE) {
group_args <- unique_trials_RCBD
} else {
group_args <- unique_trials_SP
}
data %>%
group_by_at(vars(group_args))
}
a<-doAGroupBy(data, FALSE) %>%
mutate(trial_number=cur_group_id())
总共应该有 4 次试验。关于如何改进此代码的任何想法?谢谢
【问题讨论】:
-
为什么要将
PDMR_vol_7 CF026标识为2次试验?同样在unique_trials_SP中,您正在从中删除“栽培品种”。对吗?
标签: r if-statement dplyr group-by tidyverse