r - 设置开始计数的数字
问题描述
我想设置一个数字来开始计算行中的相同数据
dat <- read.table(header = TRUE, text = "chrom position strand value label
chr1 17432 - 0 romeo
chr1 17433 - 0 romeo
chr1 17434 - 0 romeo
chr1 17435 - 0 romeo
chr1 17409 - 1 juliet
chr1 17410 - 1 juliet
chr1 17411 - 1 juliet")
#set the starting count number for romeo
number = 2
#set the starting count number for romeo
juliet= 3
#install.packages('dplyr')
library(dplyr)
dat %>%
group_by(label) %>%
mutate(number = 1:n())
dat <- read.table(header = TRUE, text = "chrom position strand value label
chr1 17432 - 0 romeo
chr1 17433 - 0 romeo
chr1 17434 - 0 romeo
chr1 17435 - 0 romeo
chr1 17409 - 1 juliet
chr1 17410 - 1 juliet
chr1 17411 - 1 juliet")
#install.packages('dplyr')
library(dplyr)
dat %>%
group_by(label) %>%
mutate(number = 1:n())
chrom position value label number
chr1 17432 - 0 romeo 2
chr1 17433 - 0 romeo 3
chr1 17434 - 0 romeo 4
chr1 17435 - 0 romeo 5
chr1 17409 - 1 juliet 3
chr1 17410 - 1 juliet 4
chr1 17411 - 1 juliet 5
解决方案
我们可以创建一个数据框label
及其起始值,以便它具有可扩展性并且可以容纳labels
我们想要的任意数量。
lkup <- data.frame(label = c("romeo", "juliet"), number = c(2, 3))
然后我们可以加入两个数据框,获取起始值并将其添加到当前行号以获得新的number
library(dplyr)
dat %>%
left_join(lkup, by = "label") %>%
group_by(label) %>%
mutate(number = row_number() + number - 1)
#Or same as OP's attempt
#mutate(number = 1:n() + number - 1)
# chrom position strand value label number
# <fct> <int> <fct> <int> <fct> <dbl>
#1 chr1 17432 - 0 romeo 2
#2 chr1 17433 - 0 romeo 3
#3 chr1 17434 - 0 romeo 4
#4 chr1 17435 - 0 romeo 5
#5 chr1 17409 - 1 juliet 3
#6 chr1 17410 - 1 juliet 4
#7 chr1 17411 - 1 juliet 5
在基础 R 中,我们可以使用merge
withave
使用相同的逻辑
dat$number <- with(merge(dat, lkup, by = "label", all.x = TRUE),
number + ave(number, label, FUN = seq_along) - 1)
推荐阅读
- javascript - 将最大值存储在变量中的惯用方式?
- kotlin - Kotlin 中的任何泛型
- javascript - 为什么本地存储保存未定义?
- java - 尽管指定了文件扩展名,但上传到 Cloud Storage 的文件类型不正确
- java - jaxb 绑定 name 属性的自定义值
- javascript - Reactjs 不渲染本地图像
- go - 在 hugo 中按类别列出所有页面
- android-studio - 为什么外部共享库没有链接到我的 APK?
- c# - 对符号加载问题进行故障排除 - Visual Studio 2019 - Step Into 不再工作
- r - 无法使用 dplyr 计算百分比变化