根据来自其他两个因子水平的测量值的组合创建一个新的因子水平
Creating a new factor level based on combination of measurement values from two other factor levels
我正在对腹部 CT 扫描中不同 body 隔室中的自动体积脂肪测量值进行分析。对每个患者的扫描在连续的椎骨水平进行测量,并且每个患者都有多个隔室分别测量(皮下和内脏)。先前的研究已经确定 visceral/subcutaneous 脂肪测量值的比率特别令人感兴趣。
我很难在我的数据集中计算这个比率。在此示例代码中,每位患者有六个条目。每个条目都与椎骨水平隔室的测量脂肪体积相关联。
我想做的是创建一个新的测量类型 - 'vat/sat' - 这只是三个椎骨水平中每个水平的两个测量值的比率。本质上,我试图为每个患者插入三个新的观察结果,这些观察结果与新的因子水平和值相关联,该值是其他值的运算。非常感谢任何帮助。
library(data.table)
data <- data.table(ID = rep(c(1:4),each = 6), value = rnorm(24, 1000, 500),
level = rep(c('l1','l2','l3')),
measure = rep(c(rep('vat',3),rep('sat',3)),4))
编辑:我一直在为这个项目使用 data.table 并且熟悉基本操作,但似乎无法弄清楚这一点。
我会考虑使用宽幅面,这样更自然:
res = dcast(data, ID + level ~ measure)[, rat := vat/sat][]
要回到long,有
melt(res, id=c("ID", "level"))
由于,所以需要最后的[]
。没有它,当你输入...
> res = dcast(data, ID + level ~ measure)[, rat := vat/sat][]
> res
# nothing happens
> res
# now it prints
我不确定它是否在函数文档中,但您可能想查看 browseVignettes("data.table")
的小插图,因为它们涵盖了这样的怪癖并有助于建立语法直觉。
我正在对腹部 CT 扫描中不同 body 隔室中的自动体积脂肪测量值进行分析。对每个患者的扫描在连续的椎骨水平进行测量,并且每个患者都有多个隔室分别测量(皮下和内脏)。先前的研究已经确定 visceral/subcutaneous 脂肪测量值的比率特别令人感兴趣。
我很难在我的数据集中计算这个比率。在此示例代码中,每位患者有六个条目。每个条目都与椎骨水平隔室的测量脂肪体积相关联。
我想做的是创建一个新的测量类型 - 'vat/sat' - 这只是三个椎骨水平中每个水平的两个测量值的比率。本质上,我试图为每个患者插入三个新的观察结果,这些观察结果与新的因子水平和值相关联,该值是其他值的运算。非常感谢任何帮助。
library(data.table)
data <- data.table(ID = rep(c(1:4),each = 6), value = rnorm(24, 1000, 500),
level = rep(c('l1','l2','l3')),
measure = rep(c(rep('vat',3),rep('sat',3)),4))
编辑:我一直在为这个项目使用 data.table 并且熟悉基本操作,但似乎无法弄清楚这一点。
我会考虑使用宽幅面,这样更自然:
res = dcast(data, ID + level ~ measure)[, rat := vat/sat][]
要回到long,有
melt(res, id=c("ID", "level"))
由于[]
。没有它,当你输入...
> res = dcast(data, ID + level ~ measure)[, rat := vat/sat][]
> res
# nothing happens
> res
# now it prints
我不确定它是否在函数文档中,但您可能想查看 browseVignettes("data.table")
的小插图,因为它们涵盖了这样的怪癖并有助于建立语法直觉。