Назначение номера в новом столбце на основе количества строк - PullRequest
0 голосов
/ 28 апреля 2018

Хотелось бы узнать, как увеличить число в зависимости от того, в каждой ли строке 10.

Например

test_table <- data.frame(row=c(rev(0:99)))

        > head(test_table,11)
   row
1   99
2   98
3   97
4   96
5   95
6   94
7   93
8   92
9   91
10  90
11  89

Я хочу добавить новый столбец, когда мы передаем каждую 10-ю строку в row столбце.

Итак, я попытался

library(dplyr)
 test_table%>%
   mutate(No=cumsum(n()/10==10))

, в котором каждый столбец No равен 1. То, что я ищу, является числом, увеличивающимся от 0,1,2,3 в каждых 10 изменениях строки в данных. Как я могу это сделать?

        row No
1    99  1
2    98  1
3    97  1
4    96  1
5    95  1
6    94  1
7    93  1
8    92  1
9    91  1
10   90  1
11   89  1

ожидаемый результат

   row No
1    99  0
2    98  0
3    97  0
4    96  0
5    95  0
6    94  0
7    93  0
8    92  0
9    91  0
10   90  0
11   89  1

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Вы можете попробовать использовать floor после деления row_number() на 10. Это увеличит No в каждом 10-м ряду:

library(dplyr)

test_table <- data.frame(row=c(rev(0:99)))

test_table%>%
  mutate(No=floor((row_number()-1)/10))

#     row No
# 1    99  0
# 2    98  0
# 3    97  0
# 4    96  0
# 5    95  0
# 6    94  0
# 7    93  0
# 8    92  0
# 9    91  0
# 10   90  0
# 11   89  1
# 12   88  1
# 13   87  1
# 14   86  1
# 15   85  1
# 16   84  1
# 17   83  1
# 18   82  1
# 19   81  1
# 20   80  2
# 21   79  2
#......so on
0 голосов
/ 28 апреля 2018

Вот базовое решение R.

test_table$No <- (seq_len(nrow(test_table)) - 1) %/% 10

head(test_table, 15)
#    row No
# 1   99  0
# 2   98  0
# 3   97  0
# 4   96  0
# 5   95  0
# 6   94  0
# 7   93  0
# 8   92  0
# 9   91  0
# 10  90  0
# 11  89  1
# 12  88  1
# 13  87  1
# 14  86  1
# 15  85  1
0 голосов
/ 28 апреля 2018

Вы можете выполнить модульное деление на row_number:

test_table %>% mutate(No = (row_number() - 1) %/% 10)

#    row No
#1    99  0
#2    98  0
#3    97  0
#4    96  0
#5    95  0
#6    94  0
#7    93  0
#8    92  0
#9    91  0
#10   90  0
#11   89  1
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...