用R计算起始 - 目的地关系(没有直接)

时间:2017-03-24 16:28:49

标签: r

我有这样的起源 - 目的地表。

library(dplyr)
set.seed(1983)

namevec <- c('Portugal', 'Romania', 'Nigeria', 'Peru', 'Texas', 'New Jersey', 'Colorado', 'Minnesota')

## Create OD pairs
df <- data_frame(origins = sample(namevec, size = 100, replace = TRUE), 
                 destinations = sample(namevec, size = 100, replace = TRUE))

问题

我被困在计算每个出发地 - 目的地的关系(没有方向性)。

如何才能获得科罗拉多州 - 明尼苏达州和明尼苏达州 - 科罗拉多州被视为一组的输出?

到目前为止我尝试过:

## Counts for each OD-pairs
df %>%
  group_by(origins, destinations) %>%
  summarize(counts = n()) %>%
  ungroup() %>%
  arrange(desc(counts))

Source: local data frame [48 x 3]

      origins destinations counts
        (chr)        (chr)  (int)
1     Nigeria     Colorado      5
2    Colorado     Portugal      4
3  New Jersey    Minnesota      4
4  New Jersey   New Jersey      4
5        Peru      Nigeria      4
6        Peru         Peru      4
7     Romania        Texas      4
8       Texas      Nigeria      4
9   Minnesota    Minnesota      3
10    Nigeria     Portugal      3
..        ...          ...    ...

1 个答案:

答案 0 :(得分:1)

一种方法是将两个位置的排序组合合并为一个字段。总结一下将删除您的两个原始列,因此您需要重新加入它们。

//Create a local variable
    var alertTextField:UITextField?

    //Create the AlertController
    let actionSheetController: UIAlertController = UIAlertController(title: "Add User", message: "Enter username", preferredStyle: .alert)

    //Create and add the Cancel action
    let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .cancel) { action -> Void in
        //Do some stuff
    }
    actionSheetController.addAction(cancelAction)

    //Create and add save action
    let saveAction: UIAlertAction = UIAlertAction(title: "Save", style: .default) { action -> Void in
        //Unwrap your local variable and access your textfield
        if let textField = alertTextField {
            print(textField.text!)
        }
    }
    actionSheetController.addAction(saveAction)
    //Add a text field

    actionSheetController.addTextField { textField -> Void in
        //TextField configuration
        textField.textColor = UIColor.blue

        //Assign your UIAlertController textField to your local variable
        alertTextField = textField

    }

    //Present the AlertController
    self.present(actionSheetController, animated: true, completion: nil)

(我使用paired <- df %>% mutate( orderedpair = paste(pmin(origins, destinations), pmax(origins, destinations), sep = "::") ) paired # # A tibble: 100 × 3 # origins destinations orderedpair # <chr> <chr> <chr> # 1 Peru Colorado Colorado::Peru # 2 Romania Portugal Portugal::Romania # 3 Romania Colorado Colorado::Romania # 4 New Jersey Minnesota Minnesota::New Jersey # 5 Minnesota Texas Minnesota::Texas # 6 Romania Texas Romania::Texas # 7 Peru Peru Peru::Peru # 8 Romania Nigeria Nigeria::Romania # 9 Portugal Minnesota Minnesota::Portugal # 10 Nigeria Colorado Colorado::Nigeria # # ... with 90 more rows left_join( paired, group_by(paired, orderedpair) %>% count(), by = "orderedpair" ) %>% select(-orderedpair) %>% distinct() %>% arrange(desc(n)) # # A tibble: 48 × 3 # origins destinations n # <chr> <chr> <int> # 1 Romania Portugal 6 # 2 New Jersey Minnesota 6 # 3 Portugal Romania 6 # 4 Minnesota New Jersey 6 # 5 Romania Texas 5 # 6 Nigeria Colorado 5 # 7 Texas Nigeria 5 # 8 Texas Romania 5 # 9 Nigeria Texas 5 # 10 Peru Peru 4 # # ... with 38 more rows 作为分隔符的唯一原因是您需要解析"::";使用默认的orderedpair(空格)不会与之合作(例如)混合中的" "。)