如何将行中的信息转换为R中的一列?

时间:2016-07-18 19:20:33

标签: r

我有150个站点(Cod),每个站点都有许多使用过的服务。

|        Cod |  SERVICE1 | SERVICE2 | SERVICE3 | Position
------------------------------------------------------
| P05        |     XRS10 |     XRS07|     XRS05| 12455
| R07        |      FR05 |          |          | 4521
| X05        |     XRS07 |     XRS10|          | 57541

我需要将所有服务(SERVICE1,SERVICE2,SERVICE3)放在一列中。这意味着我需要以下结果。

|        Cod |   SERVICE |  Position
------------------------------------------------------
| P05        |     XRS10 |   12455
| P05        |     XRS07 |   12455
| P05        |     XRS05 |   12455
| R07        |      FR05 |    4521
| X05        |     XRS07 |   57541
| X05        |     XRS10 |   57541

使用R的sqldf包还是有办法做到这一点吗?或者以任何方式做到这一点?

1 个答案:

答案 0 :(得分:1)

试试这个:

[[1,2,3], [4,5,6,7], [8,9]]

不幸的是我不熟悉library(magrittr) ##used for the pipe, %>% library(dplyr) ##for filtering observations and selecting columns library(tidyr) ##for making your dataset long/tidy new_data <- original_data %>% tidyr::gather(key = service_type, value = SERVICE) %>% dplyr::filter(!is.na(SERVICE)) %>% dplyr::select(-service_type)

请注意,如果您想保留有关服务是来自sqldfSERVICE1还是SERVICE2的信息,您将省略最后一行(SERVICE3 )完全。