Je voudrais avoir r Calculer le maintenant, la taxe doit être calculé comme suit: p> pour les cinq premières années (2001-2005), revenu <20 = 25%, revenu> 20 == 50% P> pour les deuxième cinq ans ( 2006-2010), revenu <15 = 20%, revenu> 20 == 45% p> J'ai essayé de l'écrire comme suit: p> mais Je reçois l'erreur: p> De plus, j'aimerais vraiment réécrire ceci de manière plus propre avec Netincome code> pour une certaine quantité de
revenu code>:
sapply code> mais je me débattre avec comment. p> p>
3 Réponses :
library(dplyr) DT[Income < 0,Income:= NA] # better use this construction DT[,.(netincome = case_when(Income < 20 & year < 2006 ~ Income - 0.25 * Income, Income > 20 & year < 2006 ~ Income - 20 * 0.25 - 0.5 * (Income - 20), Income < 15 & year > 2005 ~ Income - 0.2 * Income, Income > 15 & year > 2005 ~ Income - 15*0.2 - 0.45 * (Income - 15)))] This would be much easier if you use consistent column name (best practice tolower). And try not to use names like DT. DT stands for one of a well used package in R, and it's a bit confusing. And in future version of data.table there would be an fcase, which faster then case_when
library(dplyr) DT%>% mutate(netincome = case_when(Income < 20 & year < 2006 ~ Income - 0.25 * Income, Income > 20 & year < 2006 ~ Income - 20*0.25 - 0.5*(Income-20), Income < 15 & year > 2005 ~ Income -0.2*Income, Income > 15 & year > 2005 ~ Income - 15*0.2 - 0.45*(Income-15)) If you like dplyr approach :), you also can use %<>% this operator. Or if you don't want new column you may switch to summarize
Veuillez combiner vos réponses en une seule fois, sauf si vous pensez qu'il est vraiment nécessaire de faire en deux distincts
HM, je pense qu'il serait préférable de séparer les données data.table et dplyr.
Si vous voulez le faire dans la base R, vous n'avez pas besoin d'utiliser Résumé de la colonne résultante. Est-ce que cela correspond à votre sortie attendue? P> sapply code>; Vous pouvez simplement nier quelques déclarations
ifelse code>.
> summary(DT$netincome)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
4.372 4.710 11.053 11.614 14.881 27.076 20
Sapply code> perd l'avantage de la vectorisation. Tous vos calculs sont sur des vecteurs.