[問題] 依特定欄位的內容對data.table資料作分群
- 問題:
[問題類型]:
程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
[軟體熟悉度]:
入門(寫過其他程式,只是對語法不熟悉)
[問題敘述]:
手邊有一份資料 dt1 ,裡面有幾個欄位,以下節錄部分內容:
Stop.No TravelTime Weekend
1 1 ↘
2 1 → 當Stop.No==1, TravelTime介於[0,120],Weekend可能為True/False
3 1 ↗
...
666 2 ↘
667 2 → 當Stop.No==2, TravelTime介於[60,180],Weekend可能為True/False
668 2 ↗
...
1315 3 ↘
1316 3 → 當Stop.No==3,TravelTime介於[120,240],Weekend可能為True/False
1317 3 ↗
...
2017
=========================================================================
※1 共2017筆資料
※2 Stop.No的資料為隨機1~3, 上面表列僅為示意用
並非正好[ 第1~665筆的Stop.No==1, 第666~1314筆==2, 第1315~2017筆==3]
=========================================================================
我想做的事情是依照 Stop.No/Weekend 欄位進行分群,
例:
這2017筆資料中有322筆資料 Stop.No==1 且 Weekend=T ,
則將這322筆視為同一群,其餘依此類推,故應可得到6群
這邊參照之前板上前輩教導的方法將相同的 Stop.No 和 Weekend 取出作 group_by
程式碼架構如下(by dplyr):
dt1 %>%
group_by( Stop.No, Weekend ) %>%
summarise( 對 group_by 出來的6群,作集群分析,詳如下述 )
=========================================================================
summarise() 的內容:
想把「上面 group_by 出來的結果(6群),每一群都再分成兩群(gr1/gr2)並找出中心」,
因此上網查了分群的方法,根據google,假設上述六群中的某群叫作 gr8,
則可透過以下程式碼將 gr8 分成兩群,並求出 gr8 的群集中心
kmeans.result = kmeans( gr8, 2)
gr8_result <- gr8[, centers := kmeans.result$centers[kmeans.result$cluster] ]
=========================================================================
我想做的事情:
以本資料 dt1 為例, group_by 出來的 6群 應可透過kmeans求出 12個集群中心
( gr8 裡面的 centers欄位 )
最後將 gr8 的 centers 欄位內容加回 dt1 對應的2017筆資料列後面
以上敘述滿複雜的,若有敘述不清的地方歡迎提問,小弟將盡速補充
請求各位前輩們協助,先謝謝各位大大了
[程式範例]:
[環境敘述]:
[關鍵字]:
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.220
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1488723097.A.21F.html
→
03/05 22:41, , 1F
03/05 22:41, 1F
→
03/05 23:00, , 2F
03/05 23:00, 2F
→
03/05 23:01, , 3F
03/05 23:01, 3F
※ 編輯: joson4921 (1.161.169.236), 03/05/2017 23:22:06
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章