如何为每次观察单独保留变量的最低值?

时间:2017-06-17 13:37:29

标签: sas

希望这是一个相当简单的问题,遗憾的是我还没有解决问题。我有几个公司的数据集,其中包含一个变量,指示公司何时停止其活动。不幸的是,这个数据集每年都会更新而不会调整任何前几年,因此退出/停止的实际年份只输入一次。以下表中的公司1为例。该公司于2010年退出,但在2010年之前的每年都会出现一个仍然活跃的虚拟(“9999”)。对于公司1,我想将“9999”替换为“2010”(即退出年份),而将“9999”替换为期末仍然活跃的公司,例如公司3。

company          year      exit/stop year
company 1        2007      9999 
company 1        2008      9999
company 1        2009      9999
company 1        2010      9999
company 2        2007      9999
compnay 2        2008      9999
company 2        2009      2009
company 3        2007      9999
company 3        2008      9999
company 3        2009      9999
company 3        2010      9999
company 4        2007      9999
company 4        2008      2008
...              ...       ...

我试图找到每家公司的最低价值并将“退出/停止年”中的所有值替换为最低值,但到目前为止它还没有正常工作所以我想知道是否有人可能知道如何做这个操作?

Bests,

1 个答案:

答案 0 :(得分:0)

你可以拿最后一条记录并将其合并回数据。或者更简单地获取非9999的记录并将它们重新合并。

    val req = WebSocketRequest(uri = "ws://127.0.0.1/ws")
    val webSocketFlow = Http().webSocketClientFlow(req)

    val messageSource: Source[Message, ActorRef] = 
         Source.actorRef[TextMessage.Strict](bufferSize = 10, OverflowStrategy.fail)

    val messageSink: Sink[Message, NotUsed] =
        Flow[Message]
            .map(message => println(s"Received text message: [$message]"))
            .to(Sink.ignore)

    val ((ws, upgradeResponse), closed) =
        messageSource
            .viaMat(webSocketFlow)(Keep.both)
            .toMat(messageSink)(Keep.both)
            .run()

    val connected = upgradeResponse.flatMap { upgrade =>
        if (upgrade.response.status == StatusCodes.SwitchingProtocols) {
            Future.successful(Done)
        } else {
            throw new RuntimeException(s"Connection failed: ${upgrade.response.status}")
        }
    }

    ws ! TextMessage.Strict("Hello World")
    ws ! TextMessage.Strict("Hi")
    ws ! TextMessage.Strict("Yay!")

enter image description here