удалить строки фрейма данных, когда сумма двух конкретных столбцов равна нулю - PullRequest
0 голосов
/ 26 мая 2020
structure(list(area_code = c(2, 2, 2, 2, 2, 2), area = c("Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"), item_code = c(2511, 2805, 2513, 2513, 2514, 2514), item = c("Wheat and products", "Rice (Milled Equivalent)", "Barley and products", "Barley and products", "Maize and products", "Maize and products"), element_code = c(0, 0, 1, 0, 1, 0), element = c("Food", "Food", "Feed", "Food", "Feed", "Food"), Y1961 = c(0, 183, 76, 237, 210, 403), Y2013 = c(0, 422, 360, 89, 200, 76)), row.names = c(NA,-6L),class = c("tbl_df", "tbl", "data.frame"))

если мой фрейм данных выглядит так, я хочу, чтобы R удалил все строки, в которых сумма Y1961 и Y2013 равна 0. В этом примере код удалит всю первую строку.

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Вы можете разделить свой фрейм данных с помощью отрицателя ! и rowSums:

df[!rowSums(df[, 7:8]) == 0,]
# A tibble: 5 x 8
  area_code area        item_code item                     element_code element Y1961 Y2013
      <dbl> <chr>           <dbl> <chr>                           <dbl> <chr>   <dbl> <dbl>
1         2 Afghanistan      2805 Rice (Milled Equivalent)            0 Food      183   422
2         2 Afghanistan      2513 Barley and products                 1 Feed       76   360
3         2 Afghanistan      2513 Barley and products                 0 Food      237    89
4         2 Afghanistan      2514 Maize and products                  1 Feed      210   200
5         2 Afghanistan      2514 Maize and products                  0 Food      403    76
0 голосов
/ 26 мая 2020

вы можете это сделать

df = df[-row(subset(df, Y1961 == 0 & Y2013 == 0)),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...