J'ai une trame de données df
qui ressemble à ceci:Comment séparer des lignes entières dans de nouvelles trames de données en utilisant les instructions if
Date Company MarketCap
2000-01-31 Company one 1000
2000-02-28 Company one 2000
2000-03-31 Company one 3000
2000-01-31 Company two 2500
2000-02-28 Company two 3000
2000-03-31 Company two 3500
2000-01-31 Company three 1500
2000-02-28 Company three 1800
2000-03-31 Company three 1100
je besoin d'une instruction if qui effectue les opérations suivantes:
If(df$MarketCap >= median(df$MarketCap){
BigCap <- df[all the rows that have a market cap >= median(df$MarketCap)
}
Mettez en mots; Pour chaque ligne de df$MarketCap
, je veux vérifier si les capitalisations boursières sont supérieures ou égales à la capitalisation boursière médiane de df$MarketCap
. Toutes les lignes contenant des capitalisations boursières supérieures ou égales à la capitalisation boursière médiane de df$MarketCap
devraient constituer une nouvelle trame de données, BigCap
.
La nouvelle trame de données BigCap
devrait donc ressembler à ceci:
BigCap
:
Date Company MarketCap
2000-02-28 Company one 2000
2000-03-31 Company one 3000
2000-01-31 Company two 2500
2000-02-28 Company two 3000
2000-03-31 Company two 3500
Je me sens comme cela devrait être facile à acheive en utilisant une instruction if, mais je ne l'ai pas eu de succès jusqu'ici (pas en regardant des questions similaires à SO non plus). J'apprécie toute l'aide que je peux obtenir.
Notez, mon vrai df est beaucoup plus grand que l'exemple fourni ici, où j'ai 360 dates et plus de 2000 entreprises.
Je vais essayer de votre réponse pour voir si Je peux le faire fonctionner. Notez que j'ai maintenant édité ma question un peu, afin de la rendre plus facile à comprendre (et peut-être à résoudre) –
Votre question éditée maintenant besoin seulement 'BigCap <- df [df $ MarketCap> = médian (df $ MarketCap, na .rm = T),] ' –
Merci, ça marche :) J'étais certain que j'aurais besoin d'une déclaration if et/ou for. Et si, comme dans ma question initiale, je voulais seulement faire cela pour certaines dates. C'est-à-dire, je veux faire un BigCapJan pour tous les plafonds de marché en janvier qui est supérieur ou égal à la capitalisation boursière médiane pour janvier. Existe-t-il un moyen facile de l'implémenter dans votre solution? J'ai essayé d'utiliser 'BigCapJan <- df [df $ MarketCap [stri_detect_fixed (df $ Date," 2000-01 ")]> = médiane (df $ MarketCap [stri_detect_fixed (df $ Date," 2000-01 ") ], na.rm = T),] 'mais cela ne semble pas fonctionner. –