[問題] 用dplyr做任兩column相乘

作者: rebe212296 (綠豆冰)   2020-10-13 09:43:59
如題
[問題類型]:
dplyr套件
[軟體熟悉度]:
一年
[問題敘述]:
我的問題在於如何任選2個欄位做運算,以一行程式表示
目前data這個資料集有24欄,我在想是否有方法可以不要打23+22+…+1=276行程式
col1~col24
任2欄相乘
[程式範例]:
data %>%group_by(col1,col2)%>%mutate(product=col1*col2)
[環境敘述]:
R 3.6.0
[關鍵字]:
選擇性,也許未來有用
作者: locka (locka)   2020-10-13 11:32:00
不需要group_by()啊,直接 mutate()就好
作者: rebe212296 (綠豆冰)   2020-10-13 11:55:00
我是想問,如果有24欄中任選2欄,難道要一對一對打出來嗎
作者: locka (locka)   2020-10-13 12:05:00
你的意思是想把所有的排列組合都mutate出來嗎 (c1*c2, c1*c3…c1*24… and so on?)
作者: rebe212296 (綠豆冰)   2020-10-13 12:09:00
就是col1*col2存product12,col2*col3存product23,總共存C_2^24種組合對共有23+22+...+1種
作者: hank830214 (hank)   2020-10-13 12:23:00
我目前想到可以用combn()求出所有組合再搭配eval()+parse()把文字當作程式碼執行http://tinyurl.com/y5sks49a
作者: clickhere (It's time to go home.)   2020-10-13 12:50:00
x<-t(data)%*%data;x[lower.tri(x)]
作者: andrew43 (討厭有好心推文後刪文者)   2020-10-13 12:50:00
一樣也是先想到combn() https://ideone.com/lHdXPe
作者: locka (locka)   2020-10-13 13:51:00
expand.grid的方法供參 https://i.imgur.com/oreH24D.jpg但樓上a大的方法比較好~ 學習了!!而且用expand.grid不能刪除重複還要再想辦法把結果轉回column 啊啊啊好麻煩好麻煩(吐槽自己是哪招XD)
作者: rebe212296 (綠豆冰)   2020-10-13 16:20:00
謝謝各位
作者: andrew43 (討厭有好心推文後刪文者)   2020-10-13 17:43:00
我的res並不是list而是matrix, 可再用as.data.frame。

Links booklink

Contact Us: admin [ a t ] ucptt.com