当前位置: 首页 > 知识库问答 >
问题:

基于其他两个因素水平的测量值的组合创建一个新的因素水平

鲁泰宁
2023-03-14

我正在分析腹部CT扫描中不同身体部位的自动脂肪体积测量。在每个患者的扫描中,在连续的椎体水平上进行测量,每个患者有多个单独测量的隔室(皮下和内脏)。先前的研究已经确定内脏/皮下脂肪测量的比率特别重要。

我很难在我的数据集中计算这个比率。在这个示例代码中,每个患者有六个条目。每个条目都与椎骨水平的隔间测量的脂肪体积相关联。

我想做的是创建一个新的测量类型-“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,熟悉基本操作,但似乎无法解决这个问题。

共有1个答案

舒浩邈
2023-03-14

我会考虑使用更自然的宽格式:

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")查看小插曲,因为它们涵盖了这样的怪癖并有助于建立语法的直觉。

 类似资料:
  • 我想在Pandas数据集中创建一个新列,基于另外两个列的值。 现在,应该如下所示: 有什么帮助吗?

  • 我有一个名为的列表,每个坐标包含三个值。两个x、y类型和一个名称。我的代码接收坐标项作为输入,并通过创建类型的来根据名称对它们进行分组。通过这种方式,我没有一对坐标与一个名字相关联,而是有一个名字与所有相应的坐标相关联。 例如。: 地图前: 其中A、B和C是名称。如果多个名称出现在一起,则表示它们共享相同的坐标。 地图后: 我想要实现的是将每个名字从组中分离出来,并将所有坐标链接到那个名字。 例如

  • 问题内容: 我想比较在创建新列的两列的值。如果它们等于1,我想要1,否则等于0。 我得到了以下错误 问题答案: 您需要将布尔型蒙版转换为: 样品: 因为比较列的输出不是标量,而是(和)和值,所以会出现错误。 因此需要或 用于返回标量或。

  • 是否有任何方法可以写入JSON路径,以基于前一个元素获取数组中下一个元素的值? JSON: 预期: 路径:$[0][如果匹配搜索文本]下一个|上一个 搜索文本:text 1输出(获取下一个值):值12输出(获取前一个值):值11 Searchtext:text2输出(获取下一个值):value22输出(获取上一个值):value21 我在用https://github.com/jayway/Jso

  • 假设我有一个至少有两列col1和col2的数据帧。此外,我还有另一个数据帧,其列名是col1中的值,其索引是col2中的值。 现在我想添加col3,它在col1的索引处和col2的列中给出第二个数据帧的值。结果应该如下所示: 谢谢大家!!