Gather/Select 行计算
Gather/Select rows for calculation
我的问题简单得令人尴尬,但同事问了我,我几乎从不使用Excel。在 Mathematica 中,我可以在几秒钟内解决这个问题。让我们假设一个非常简单的排列,由患者 ID、测量年份和值组成:
问题 1:如何创建仅包含第一个测量值的新 table?也就是说,ID 1 是 2014 年的行,ID 2 是 2015 年的行,ID 3 是 2016 年的行。
问题 2: 如何创建一个新的 table,每个 ID 只有一行,并且所有找到的 Values
都与功能类似于 MEDIAN()
?也就是说,ID 1 的中位数是 12 和 23,ID 2 的中位数是 32 和 16,ID 3 的中位数是 4。
假设你的 table 是按日期排序的(如图所示),那么第一个问题可以使用 VLOOKUP
来解决
=VLOOKUP("1",A1:C6,3,0)
替换 "1"
新 table 中包含 ID 1
的单元格。
对于问题 2,您可以使用以下公式,再次将 =1
替换为新 table
中包含 ID 1
的单元格
{=MEDIAN(IF(A1:A6=1,C1:C6,""))}
注意,这是数组公式,不要直接输入大括号{}
,只需按CTRL+SHIFT+ENTER,而不仅仅是在输入公式
时ENTER
这是通过创建一个像这样的数组 {12,23,"","",""}
并取这些数字的中位数来实现的。 MEDIAN
忽略字符串,因此根据需要给出 12 和 23 的中位数(ID 1 的示例)
我的问题简单得令人尴尬,但同事问了我,我几乎从不使用Excel。在 Mathematica 中,我可以在几秒钟内解决这个问题。让我们假设一个非常简单的排列,由患者 ID、测量年份和值组成:
问题 1:如何创建仅包含第一个测量值的新 table?也就是说,ID 1 是 2014 年的行,ID 2 是 2015 年的行,ID 3 是 2016 年的行。
问题 2: 如何创建一个新的 table,每个 ID 只有一行,并且所有找到的 Values
都与功能类似于 MEDIAN()
?也就是说,ID 1 的中位数是 12 和 23,ID 2 的中位数是 32 和 16,ID 3 的中位数是 4。
假设你的 table 是按日期排序的(如图所示),那么第一个问题可以使用 VLOOKUP
=VLOOKUP("1",A1:C6,3,0)
替换 "1"
新 table 中包含 ID 1
的单元格。
对于问题 2,您可以使用以下公式,再次将 =1
替换为新 table
1
的单元格
{=MEDIAN(IF(A1:A6=1,C1:C6,""))}
注意,这是数组公式,不要直接输入大括号{}
,只需按CTRL+SHIFT+ENTER,而不仅仅是在输入公式
这是通过创建一个像这样的数组 {12,23,"","",""}
并取这些数字的中位数来实现的。 MEDIAN
忽略字符串,因此根据需要给出 12 和 23 的中位数(ID 1 的示例)