分隔组合在一个字符串中的值

时间:2019-12-30 15:50:18

标签: excel spss

我想在Excel或SPSS中解决此问题:

我有分类数据(每个数字代表医学诊断),这些数据被组合到单个单元格中。换句话说,一行(患者)具有多个诊断。但是,我想知道每次诊断的频率。最好的方法是什么? (请参阅图片以供参考)

enter image description here

2 个答案:

答案 0 :(得分:1)

对于SPSS:

首先只是创建一些示例数据以进行演示:

data list free/e_cerv_dis_state (a20).
begin data
"{1/2/3/6}" "{1/2/4}" "{2/4/5}" "{1/5/6}" "{4}" "{4/5/6}" "{1/2/3/4/5/6}"
end data.

现在,以下代码将为每个可能的诊断创建一个单独的变量,如果诊断存在于原始变量中,则会在其中放入1。

do repeat vr=diag1 to diag9/vl=1 to 9.
    compute vr=char.index(e_cerv_dis_state, string(vl, f1) ) > 0.
end repeat.
freq diag1 to diag6.

请注意,这最多只能用于9个诊断。如果您不止于此,则必须将解决方案调整为多个数字。

答案 1 :(得分:1)

假设列数相当规则,我建议对列使用文本,然后在单元格上使用COUNTIF(如果它们是所需的值)。但是,有一个更健壮和可重现的解决方案,涉及使用SQL。如果您在此处下载免费版本的SQL Express:https://www.microsoft.com/en-gb/sql-server/sql-server-downloads

然后,您可以导入数据表,方法如下:How to import an Excel file into SQL Server?

然后,您可以使用更友好的SQL数据库来获取所需的答案。例如,您可以使用一条选择语句,内容为:

SELECT count(e_cerv_dis_state)
WHERE e_cerv_dis_state = '6'

也可以使用CASE WHEN语句添加诊断名称。