Francesca PANCOTTO
2017-Oct-19 09:30 UTC
[R] Select part of character row name in a data frame
Dear R contributors, I have a problem in selecting in an efficient way, rows of a data frame according to a condition, which is a part of a row name of the table. The data frame is made of 64 rows and 2 columns, but the row names are very long but I need to select them according to a small part of it and perform calculations on the subsets. This is the example: X Y "Unique to strat " 0.0482 28.39 "Unique to crt.dummy " 0.0441 25.92 "Unique to gender " 0.0159 9.36 "Unique to age " 0.0839 49.37 "Unique to gg_right1 " 0.0019 1.10 "Unique to strat:crt.dummy " 0.0689 40.54 "Common to strat, and crt.dummy " -0.0392 -23.09 "Common to strat, and gender " -0.0031 -1.84 "Common to crt.dummy, and gender " 0.0038 2.21 "Common to strat, and age " 0.0072 4.21 X and Y are the two columns of variables, while ?Unique to strat?, are the row names. I am interested to select for example those rows whose name contains ?strat? only. It would be very easy if these names were simple, but they are not and involve also spaces. I tried with select matches from dplyr but works for column names but I did not find how to use it on row names, which are of course character values. Thanks for any help you can provide. ---------------------------------- Francesca Pancotto, PhD
Enrico Schumann
2017-Oct-19 10:12 UTC
[R] Select part of character row name in a data frame
Quoting Francesca PANCOTTO <f.pancotto at unimore.it>:> Dear R contributors, > > I have a problem in selecting in an efficient way, rows of a data > frame according to a condition, > which is a part of a row name of the table. > > The data frame is made of 64 rows and 2 columns, but the row names > are very long but I need to select them according to a small part of > it and perform calculations on the subsets. > > This is the example: > X Y > "Unique to strat " > 0.0482 28.39 > "Unique to crt.dummy " > 0.0441 25.92 > "Unique to gender " > 0.0159 9.36 > "Unique to age " > 0.0839 49.37 > "Unique to gg_right1 " > 0.0019 1.10 > "Unique to strat:crt.dummy " > 0.0689 40.54 > "Common to strat, and crt.dummy " > -0.0392 -23.09 > "Common to strat, and gender " > -0.0031 -1.84 > "Common to crt.dummy, and gender " > 0.0038 2.21 > "Common to strat, and age " > 0.0072 4.21 > > X and Y are the two columns of variables, while ?Unique to strat?, > are the row names. I am interested to select for example those rows > whose name contains ?strat? only. It would be very easy if these > names were simple, but they are not and involve also spaces. > I tried with select matches from dplyr but works for column names > but I did not find how to use it on row names, which are of course > character values. > > Thanks for any help you can provide. > > ---------------------------------- > Francesca Pancotto, PhD >Use ?grep or ?grepl: df[grep("strat", row.names(df)), ] (in which 'df' is your data frame) -- Enrico Schumann Lucerne, Switzerland http://enricoschumann.net
Francesca PANCOTTO
2017-Oct-19 10:14 UTC
[R] Select part of character row name in a data frame
Thanks a lot, so simple so efficient! I will study more the grep command I did not know. Thanks! Francesca Pancotto> Il giorno 19 ott 2017, alle ore 12:12, Enrico Schumann <es at enricoschumann.net> ha scritto: > > df[grep("strat", row.names(df)), ][[alternative HTML version deleted]]