创建条件以从其他两列生成列

时间:2015-12-10 20:39:21

标签: r data.table

根据此示例,如何在数据集中创建一个以其他两列为准的数据集。

在这个例子中,我展示了我的数据的所有可能组合:

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,具体取决于其他两列的组合。

3 个答案:

答案 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

为了确保关于两列depthBCV的记录顺序,您可以在data[, states:=.I-1]之前在数据表中设置键。