根据此示例,如何在数据集中创建一个以其他两列为准的数据集。
在这个例子中,我展示了我的数据的所有可能组合:
library(data.table)
data <- "chr start tag depth BCV
chr1 3273 chr1-3273 0 0
chr1 3274 chr1-3274 1 1
chr1 3275 chr1-3275 1 2
chr1 3276 chr1-3276 1 3
chr1 3277 chr1-3277 2 1
chr1 3278 chr1-3278 2 2
chr1 3279 chr1-3279 2 3
chr1 3280 chr1-3280 3 1
chr1 3281 chr1-3281 3 2
chr1 3282 chr1-3282 3 3"
data <- read.table(text=data, header=T)
预期结果:
newdata <- "chr start tag depth BCV states
chr1 3273 chr1-3273 0 0 0
chr1 3274 chr1-3274 1 1 1
chr1 3275 chr1-3275 1 2 2
chr1 3276 chr1-3276 1 3 3
chr1 3277 chr1-3277 2 1 4
chr1 3278 chr1-3278 2 2 5
chr1 3279 chr1-3279 2 3 6
chr1 3280 chr1-3280 3 1 7
chr1 3281 chr1-3281 3 2 8
chr1 3282 chr1-3282 3 3 9"
newdata <- read.table(text=newdata, header=T)
data.table(states)中请求的列的范围是0到9,具体取决于其他两列的组合。
答案 0 :(得分:3)
OP措辞不好。我猜你在寻找:
item
答案 1 :(得分:1)
在基地R,
data$states = as.numeric(factor(paste(data$depth, data$BCV))) - 1
答案 2 :(得分:0)
这为您提供了所需的表格:
setDT(data)
data[, states:=.I-1]
data
为了确保关于两列depth
和BCV
的记录顺序,您可以在data[, states:=.I-1]
之前在数据表中设置键。