【发布时间】:2018-08-19 15:00:29
【问题描述】:
我试图在某些条件下连接字符串变量。假设以下数据来说明。
DATA LIST FREE /USER_ID(F2.0) SHOP(A5) PRODUCT(A8).
BEGIN DATA
1 SHOP1 PRODUCT1
1 SHOP1 PRODUCT2
1 SHOP2 PRODUCT1
1 SHOP2 PRODUCT4
2 SHOP1 PRODUCT1
2 SHOP2 PRODUCT2
2 SHOP3 PRODUCT3
END DATA.
AUTORECODE SHOP PRODUCT /INTO COD_SHOP COD_PRODUCT.
DELETE VARIABLES SHOP PRODUCT.
RENAME VARIABLES COD_SHOP = SHOP.
RENAME VARIABLES COD_PRODUCT = PRODUCT.
EXECUTE.
我想要为相同的USER_ID 和SHOP 创建一个名为BOUGHT 的新变量,其中包含产品名称,遵循一些规则。
对于相同的USER_ID 和SHOP:
PRODUCT1 THEN BOUGHT IS 'PRODUCT1'
IF PRODUCT4 THEN BOUGHT IS 'PRODUCT4'
IF PRODUCT1 AND PRODUCT4 THEN BOUGHT IS 'PRODUCT1 + PRODUCT4'
IF PRODUCT2 OR PRODUCT3 THEN BOUGHT IS 'PRODUCT MIX'.
我尝试了什么
IF (PRODUCT = 1) USER_PRODUCT_1 = 1.
IF (PRODUCT = 2) USER_PRODUCT_2 = 1.
IF (PRODUCT = 3) USER_PRODUCT_3 = 1.
IF (PRODUCT = 4) USER_PRODUCT_4 = 1.
SORT CASES BY USER_ID SHOP.
AGGREGATE
/OUTFILE *
/BREAK = USER_ID SHOP
/PRODUCT1 = MAX(USER_PRODUCT_1)
/PRODUCT2 = MAX(USER_PRODUCT_2)
/PRODUCT3 = MAX(USER_PRODUCT_3)
/PRODUCT4 = MAX(USER_PRODUCT_4)
.
这样我就可以知道相同的USER_ID 和SHOP 购买的产品。然后创建变量BOUGHT
STRING BOUGHT(A60).
DO IF (PRODUCT1 = 1). BOUGHT = 'PRODUCT1'
ELSE IF. (PRODUCT4 =1) BOUGHT = 'PRODUCT4'
ELSE IF. (PRODUCT1 = 1 & PRODUCT4 = 1) BOUGHT = 'PRODUCT1 + PRODUCT4'.
ELSE. BOUGHT = 'PRODUCT MIX'
END IF.
EXECUTE.
这只是一个简单的例子。我有比这更多的产品,其中一些产品在最终变量 BOUGHT 中以特定名称分组,但其他产品需要连接。在这种情况下使用 IF 条件将需要大量工作。我怎么能这样做?
【问题讨论】:
-
到目前为止,您的语法有一些改进(例如,您应该查找
do repeat),但我无法真正理解您想要实现的目标。获取像“PRODUCT1 + PRODUCT4”这样的文本应该很容易,但您需要更好地解释“PRODUCT MIX”的规则是什么
标签: spss