[问题] 用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