Поиск вхождений повторяющегося значения в строке, R-данных или Excel? - PullRequest
0 голосов
/ 24 мая 2018

В настоящее время нужна некоторая помощь по приведенному ниже фрейму данных (который также является тем же форматом в Excel, что можно сделать в Excel или R)

Фрейм данных:

Company_id    Year    Month    Employee_Range   Employees Cheese Chips Eggs
1             2014    NA       NA               NA         1       0    0   
1             2014    NA       NA               NA         1       0    0  
1             2014    NA       NA               NA         1       0    0 
2             2014    NA       NA               NA         0       1    0
3             2014    NA       NA               NA         0       0    1 
3             2014    NA       NA               NA         0       0    1

Фрейм данных продолжаетсяПримерно для 630 000 строк приведена дополнительная информация

1) для столбца company_id, каждая компания пронумерована, поэтому 1 = компания 1, 2 = компания 2 и т. д.Каждая компания повторяется в зависимости от того, получали ли они Чипсы, Яйца или Сыр более одного раза, поэтому компания 2 имеет только один ряд.

2) числа под столбцами, сыр, чипсы и яйца просто означают 1 = «да, они заказали» и 0 = «нет, они не заказали», так что это работает как таблица подсчета, но каждыйкомпания - это строка

3) остальная информация - NA, поскольку она не нужна

4) если компания выбрала одно из яиц, сыра или чипсов, то это только этот столбец!Не существует случаев или случаев, когда компания выбирала более одного элемента, поэтому все числа содержатся в одном столбце для этой компании.

Я бы хотел найти способ подсчета суммы для данной компании.Строка, поэтому я хотел бы создать таблицу данных или таблицу Excel, такие как:

   Company_id    Year    Month    Employee_Range   Employees Cheese Chips Eggs
        1          2014    NA       NA               NA         3       0    0
        2          2014    NA       NA               NA         0       1    0
        3          2014    NA       NA               NA         0       0   2

Любые идеи полезны,

Спасибо,

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Попробуйте:

library(dplyr)

df %>% 
  group_by(Company_id, Year, Month, Employee_Range) %>% 
  summarize(Cheese = sum(Cheese), 
            Chips = sum(Chips),
            Eggs = sum(Eggs)) %>%
as.data.frame()

Результат, как вы хотели:

  Company_id Year Month Employee_Range Cheese Chips Eggs
1          1 2014    NA             NA      3     0    0
2          2 2014    NA             NA      0     1    0
3          3 2014    NA             NA      0     0    2
0 голосов
/ 24 мая 2018

Решение с использованием dplyr.dat2 - это конечный результат.

library(dplyr)

dat2 <- dat %>%
  group_by(Company_id, Year, Month, Employee_Range, Employees) %>%
  summarise_at(vars(Cheese, Chips, Eggs), funs(sum(.))) %>%
  ungroup()
dat2
# # A tibble: 3 x 8
#   Company_id  Year Month Employee_Range Employees Cheese Chips  Eggs
#        <int> <int> <lgl> <lgl>          <lgl>      <int> <int> <int>
# 1          1  2014 NA    NA             NA             3     0     0
# 2          2  2014 NA    NA             NA             0     1     0
# 3          3  2014 NA    NA             NA             0     0     2

ДАННЫЕ

dat <- read.table(text = "Company_id    Year    Month    Employee_Range   Employees Cheese Chips Eggs
1             2014    NA       NA               NA         1       0    0   
1             2014    NA       NA               NA         1       0    0  
1             2014    NA       NA               NA         1       0    0 
2             2014    NA       NA               NA         0       1    0
3             2014    NA       NA               NA         0       0    1 
3             2014    NA       NA               NA         0       0    1",
                  header = TRUE)
...