Разделение значения столбца на уникальное количество нескольких столбцов в R

Мне нужно получить значение в столбцах Area и Prm, разделив значения на уникальное количество столбцов (YEAR DIV POL ST CTY CR PL YID LID DATE).

Есть ли функция в R для достижения этого?

Заранее спасибо.

Table:

Tag  YEAR  DIV  POL  ST  CTY   CR  PL  YID  LID DATE    Area PRm  SEP1  SEP2
S25  2005  7    3068 15  205   11  44  4    2   9042004 799  4504 326.9 296.6 
S1   2005  7    4077 15  205   11  90  4    2   9202004 300  3000 316.1 309.2
S16  2005  7    4077 15  205   11  90  4    2   9202004 300  3000 391.2 201.5
S2   2005  7    4077 15  205   11  90  4    2   9202004 300  3000 271.2 311.5
S28  2005  7    3180 15  205   11  44  5    6   9202004 651  1747 251.2 382.5


Output:

Tag  YEAR  DIV  POL  ST  CTY   CR  PL  YID  LID DATE    Area PRm  SEP1  SEP2
S25  2005  7    3068 15  205   11  44  4    2   9042004 799  4504 326.9 296.6 
S1   2005  7    4077 15  205   11  90  4    2   9202004 100  1000 316.1 309.2
S16  2005  7    4077 15  205   11  90  4    2   9202004 100  1000 391.2 201.5
S2   2005  7    4077 15  205   11  90  4    2   9202004 100  1000 271.2 311.5
S28  2005  7    3180 15  205   11  44  5    6   9202004 651  1747 251.2 382.5

Разница в таблице и выводе заключается во 2, 3 и 4 строках в столбцах Area и PRm.

Значения в столбцах Area и Prm (300 и 3000) были разделены на 3 (поскольку столбцы YEAR DIV POL ST CTY CR PL YID LID DATE идентичны в строках 2, 3 и 4). Таким образом, значения в столбцах Площадь и PRm делятся на 3 (300/3 = 100 в столбце Площадь и 3000/3 = 1000 в столбце PRm во 2, 3 и 4-й строках выходной таблицы.

     S1   2005  7    4077 15  205   11  90  4    2   9202004 100  1000 316.1 309.2
    S16  2005  7    4077 15  205   11  90  4    2   9202004 100  1000 391.2 201.5
    S2   2005  7    4077 15  205   11  90  4    2   9202004 100  1000 271.2 311.5

person user8848543    schedule 28.10.2017    source источник
comment
В чем разница между Table и Output?   -  person acylam    schedule 28.10.2017
comment
Я очень старался, но безрезультатно, чтобы понять вопрос. Возможно, вы захотите переделать его.   -  person BroVic    schedule 28.10.2017
comment
Извините, если усложняю. Пожалуйста, смотрите выше для упрощенной версии.   -  person user8848543    schedule 29.10.2017
comment
@useR и Виктор: см. описание выше. Надеюсь, я ясно выразился.   -  person user8848543    schedule 29.10.2017


Ответы (1)


с dplyr :

df1 %>% add_count(YEAR,DIV,POL,ST,CTY,CR,PL,YID,LID,DATE) %>%
  mutate(Area = Area /n) %>%
  select(-n)

вывод

# # A tibble: 5 x 15
#     Tag  YEAR   DIV   POL    ST   CTY    CR    PL   YID   LID    DATE  Area   PRm  SEP1  SEP2
#   <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int>   <int> <dbl> <int> <dbl> <dbl>
# 1   S25  2005     7  3068    15   205    11    44     4     2 9042004   799  4504 326.9 296.6
# 2    S1  2005     7  4077    15   205    11    90     4     2 9202004   100  3000 316.1 309.2
# 3   S16  2005     7  4077    15   205    11    90     4     2 9202004   100  3000 391.2 201.5
# 4    S2  2005     7  4077    15   205    11    90     4     2 9202004   100  3000 271.2 311.5
# 5   S28  2005     7  3180    15   205    11    44     5     6 9202004   651  1747 251.2 382.5

данные

df1 <- read.table(text="Tag  YEAR  DIV  POL  ST  CTY   CR  PL  YID  LID DATE    Area PRm  SEP1  SEP2
S25  2005  7    3068 15  205   11  44  4    2   9042004 799  4504 326.9 296.6 
                  S1   2005  7    4077 15  205   11  90  4    2   9202004 300  3000 316.1 309.2
                  S16  2005  7    4077 15  205   11  90  4    2   9202004 300  3000 391.2 201.5
                  S2   2005  7    4077 15  205   11  90  4    2   9202004 300  3000 271.2 311.5
                  S28  2005  7    3180 15  205   11  44  5    6   9202004 651  1747 251.2 382.5",header=T,stringsAsFactors=F)
person Moody_Mudskipper    schedule 28.10.2017
comment
Я пробовал выше, но я НЕ получаю ответ, который хочу. Должен ли я указать n? - person user8848543; 29.10.2017
comment
это работает для меня, я добавил данные в свой пост, это работает для вас с данными, которые я предоставил? - person Moody_Mudskipper; 29.10.2017
comment
n создается функцией count, поэтому вам не нужно его указывать - person Moody_Mudskipper; 29.10.2017
comment
Виноват. Я допустил ошибку. Да, это сработало. Большое спасибо. - person user8848543; 29.10.2017
comment
Я изменил свое решение, add_count было намного проще (я забыл об этом в первый раз) - person Moody_Mudskipper; 29.10.2017