亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

兩個(或更多)向量中所有元素的唯一組合

兩個(或更多)向量中所有元素的唯一組合

FFIVE 2019-08-03 03:03:24
兩個(或更多)向量中所有元素的唯一組合在R中,我試圖從兩個不同大小的向量中創建一個所有元素的獨特組合。例如,第一個向量是> a <- c("ABC", "DEF", "GHI")第二個是當前存儲為字符串的日期。> b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05")我需要創建一個有兩列的數據框架,如下所示> data    a          b1  ABC 2012-05-012  ABC 2012-05-023  ABC 2012-05-034  ABC 2012-05-045  ABC 2012-05-056  DEF 2012-05-017  DEF 2012-05-028  DEF 2012-05-039  DEF 2012-05-0410 DEF 2012-05-0511 GHI 2012-05-0112 GHI 2012-05-0213 GHI 2012-05-0314 GHI 2012-05-0415 GHI 2012-05-05基本上,我在尋找一個獨特的組合,考慮一個向量的所有元素(A)與第二個向量(B)的所有元素并置。一個理想的解決方案將推廣到更多的輸入向量。另見:如何生成組合矩陣
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這也許是你想要的


> expand.grid(a,b)

   Var1       Var2

1   ABC 2012-05-01

2   DEF 2012-05-01

3   GHI 2012-05-01

4   ABC 2012-05-02

5   DEF 2012-05-02

6   GHI 2012-05-02

7   ABC 2012-05-03

8   DEF 2012-05-03

9   GHI 2012-05-03

10  ABC 2012-05-04

11  DEF 2012-05-04

12  GHI 2012-05-04

13  ABC 2012-05-05

14  DEF 2012-05-05

15  GHI 2012-05-05

如果得到的訂單不是您想要的,那么您可以隨后進行排序。如果您將參數命名為expand.grid,它們將成為列名:


df = expand.grid(a = a, b = b)

df[order(df$a), ]

和expand.grid概括為任意數量的輸入列。



查看完整回答
反對 回復 2019-08-04
?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

這個tidyr軟件包提供了一個不錯的選擇crossing,這比經典的要好得多。expand.grid函數,因為(1)字符串沒有轉換為因子,(2)排序更直觀:


library(tidyr)


a <- c("ABC", "DEF", "GHI")

b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05")


crossing(a, b)


# A tibble: 15 x 2

       a          b

   <chr>      <chr>

 1   ABC 2012-05-01

 2   ABC 2012-05-02

 3   ABC 2012-05-03

 4   ABC 2012-05-04

 5   ABC 2012-05-05

 6   DEF 2012-05-01

 7   DEF 2012-05-02

 8   DEF 2012-05-03

 9   DEF 2012-05-04

10   DEF 2012-05-05

11   GHI 2012-05-01

12   GHI 2012-05-02

13   GHI 2012-05-03

14   GHI 2012-05-04

15   GHI 2012-05-05




查看完整回答
反對 回復 2019-08-04
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

在這里失蹤r-常見問題概述是CJ-職能數據表-包裹。使用:

library(data.table)CJ(a = a, b = b, unique = TRUE)

給予:

      a          b 1: ABC 2012-05-01
 2: ABC 2012-05-02
 3: ABC 2012-05-03
 4: ABC 2012-05-04
 5: ABC 2012-05-05
 6: DEF 2012-05-01
 7: DEF 2012-05-02
 8: DEF 2012-05-03
 9: DEF 2012-05-0410: DEF 2012-05-0511: GHI 2012-05-0112: GHI 2012-05-0213: GHI 2012-05-0314: GHI 2012-05-0415: GHI 2012-05-05

在未來版本中數據表你可以用:CJ(a, b, unique = TRUE)(另見這里這里).

您已經可以通過設置以下選項來利用此功能:options("datatable.CJ.names" = TRUE)




查看完整回答
反對 回復 2019-08-04
  • 3 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號