Фильтрация данных по условию - PullRequest
1 голос
/ 18 октября 2019

У меня есть следующий фрейм данных:

mydata <- data.frame(Farmer = c(1,2,3,4,5,6,7,8),
              Farmer_Year = seq(2009,2016,1),
              Total_Output = c(560,290,458,612,450,380,500,290),
              Vegetable_Out = c(354,120,330,260,380,2020,357,95))

Я хочу выбрать только тех фермеров, у которых объем производства овощей превышает 60% от общего объема производства. Как мне сделать это с R?

Ответы [ 4 ]

1 голос
/ 18 октября 2019

Вы можете попробовать это ФОРМУЛА Массива: CTRL + SHIFT + ENTER

=IFERROR(INDEX($A$1:$D$11,SMALL(IF($D$2:$D$11/$C$2:$C$11>0.6,ROW($A$2:$A$11)-1),ROW(A2)),COLUMN(A1)),"")

enter image description here

ОБНОВЛЕНИЕ:

Эта запись была ранее помечена EXCEL-Formula

1 голос
/ 18 октября 2019

Я считаю, что это будет работать, используя пакет dplyr.

library(dplyr)

mydata %>% 
  filter(`Vegetable Out` / `Total output` > 0.6)

В будущем, пожалуйста, прочитайте, как создать минимальный воспроизводимый пример , поделившись своими данными вформа, которую можно использовать непосредственно в R, чтобы вам было легче помочь.

Кроме того, было бы полезно прочитать документацию dplyr , поскольку подмножества являются очень простой операцией для фреймов данных. .

0 голосов
/ 18 октября 2019

Пожалуйста, предоставьте код для воспроизведения приведенного выше примера. Вот базовый код без загрузки любой библиотеки

Farmer <-  c(1, 2, 3, 4, 5, 6, 7, 8)

year <-  c(2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016)

`Total output` <- c(560, 290, 458, 612, 445, 380, 500, 290)

`Vegetable Out` <- c(334, 120, 330, 260, 380, 200, 357, 95)
df <- data.frame(Farmer, year, `Total output`, `Vegetable Out`)

df[df$Vegetable.Out / df$Total.output >= 0.6, ]

Результаты

  Farmer year Total.output Vegetable.Out
3      3 2011          458           330
5      5 2013          445           380
7      7 2015          500           357
0 голосов
/ 18 октября 2019

Используя data.table пакет

library(data.table)
setDT(dt)
dt[, .SD[`Vegetable Out` / `Total output` > 0.6]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...