我想知道如何根据是否每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
我想在row
列中每隔10行传递一次新列。
所以我试过
library(dplyr)
test_table%>%
mutate(No=cumsum(n()/10==10))
使每个No
列都为1
。我要找的是数据中每10行变化0,1,2,3的数字。我怎么能这样做?
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
答案 0 :(得分:2)
您可以在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
# ...
答案 1 :(得分:1)
将floor
除以row_number()
后,您可以尝试使用10
。这将增加每第10行的No
:
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
答案 2 :(得分:0)
这是一个基础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