У меня есть функция для очистки моих данных и сохранения только тех наблюдений, которые я хочу, но которые включают в себя множество операторов if. У меня есть порядок для кодов, которые я хочу сохранить по id.Уменьшите количество операторов if в R
clear.data = function(x)
{
A = unique(x$code)
if (4 %in% A )
{x = subset(x,code==4)}
else if (10404 %in% A)
{x = subset(x,code==10404)}
else if (3942 %in% A)
{x = subset(x,code==3942)}
else {x=x}
return(x)
}
Например, в данных х
x = data.frame(id = c("A","A", "A", "B", "B","B", "B","C","C", "C","C"),
date = c("29/05/2013", "23/08/2011", "25/09/2011", "18/11/2011", "10/07/2013", "04/10/2011", "10/11/2011",
"15/12/2011", "10/02/2008", "07/09/2009", "22/03/2012"),
code = c(4,4,3942,4,10404,3942,10404,10404,3942,10404,3942) )
Я буду использовать lapply держать только замечания лицом Я заинтересован
> lapply(split(x,x$id),clear.data)
$A
id date code
1 A 29/05/2013 4
2 A 23/08/2011 4
$B
id date code
4 B 18/11/2011 4
$C
id date code
8 C 15/12/2011 10404
10 C 07/09/2009 10404
Проблема заключается в том, что у меня есть 150 кодов так это много утверждений if и большой набор данных для применения моей функции. Есть ли способ как-нибудь уменьшить инструкции if? Я разозлил голову, чтобы найти решение и много искал, но ничего не мог найти. У тебя есть идеи? Большое спасибо