作者directly (天使的圆舞曲)
看板R_Language
标题[问题] 进行特定栏位加总
时间Wed Jun 28 11:57:36 2017
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
想要进行特定栏位(特定变数)的加总,但不知道怎麽处理
[程式范例]:
资料:
id A1 B1 B2 A2 C1 C2 C3
1 1 2 0 4 5 6 7
2 5 6 8 8 1 3 2
请问如果我希望
A1+A2形成一个新的变数,变成新的一栏叫作A,
B1+B2形成一个新的变数,变成新的一栏叫作B,
C1+C2+C3形成一个新的变数,变成新的一栏叫作C,
想要得到:
id A B C
1 5 2 18
2 13 14 6
我试着用aggregate、colSums去做但没有成功,
请问用有人可以出手指导吗?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.127.237.54
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1498622259.A.BD3.html
1F:→ cywhale: data.table::melt(DT,measure=patterns("^A","^B","^C")) 06/28 12:09
2F:→ ianmao: df %>% dplyr::mutate(A=A1+A2,B=B1+B2,C=C1+C2+C3) %>% 06/28 15:28
3F:→ ianmao: dplyr::select(A, B, C) 06/28 15:28
4F:→ ianmao: 我漏了id,第二行改成dplyr::select(id, A, B, C) 06/28 15:39
5F:→ ianmao: 如果ABC栏位很多,A<-df %>% select(starts_with("A") %>% 06/29 00:13
6F:→ ianmao: apply(sum, MARGIN = 1),然後分别制作B,C 06/29 00:14
7F:→ ianmao: 最後合并 df_final <- cbind(id = df$id, A, B, C) 06/29 00:17
8F:推 silvertai: 楼上第一种作法的第一步也可以把mutate改成transmute 07/02 00:46
9F:→ silvertai: 就会直接只留下新产生的A, B, C了 阿但是这样会没有id 07/02 00:51