[英]R dplyr: adding set of columns to other set of columns using dplyr
我有兩個簡單的數據框(dfOne 和 dfTwo),我想將第二個 dataframe(selectedColumnsTwo)的選擇列添加到第一個(selectedColumnsOne)的選擇列中:
dfOne <- data.frame(list("a1"=c(1,2,3), "b1"=c(4,5,6), "c1"=c(7,8,9)))
dfTwo <- data.frame(list("a2"=c(1,2,3), "b2"=c(4,5,6)))
selectedColumnsOne = c("a1", "b1")
selectedColumnsTwo = c("a2", "b2")
數據框的樣子:
> dfOne
a1 b1 c1
1 1 4 7
2 2 5 8
3 3 6 9
> dfTwo
a2 b2
1 1 4
2 2 5
3 3 6
我知道這可以通過一些基本的 R 輕松完成:
dfOne[selectedColumnsOne] = dfOne[,selectedColumnsOne]+dfTwo[,selectedColumnsTwo ]
給出期望的結果:
> dfOne
a1 b1 c1
1 2 8 7
2 4 10 8
3 6 12 9
However, I'm using dplyr for all my dataframe modifications, and it would benefit the readability if I did this with dplyr instead of base R. 那么,還有沒有辦法用 dplyr 做到這一點?
編輯
這只是一個例子。 我原來的兩個數據框要大得多,我想要一個不綁定兩個數據框的解決方案。 另外,我正在尋找一個使用變量 selectedColumnsOne 和 selectedColumnsTwo 的解決方案,並且不需要引用其他列(示例中的列“c1”)
另外,我使用的是 dplyr 0.7.2,如果解決方案在這個版本中有效,那就更好了
我在看類似 mutate_at 的東西,但這不起作用:
> dfOne <- dfOne %>% mutate_at(selectedColumnsOne, .funs=funs(.+dfTwo[,selectedColumnsTwo ]))
Error in mutate_impl(.data, dots) :
Column `a1` must be length 3 (the number of rows) or one, not 2
一種選擇可能是:
bind_cols(dfOne, dfTwo) %>%
transmute(across(a1:b1) + across(a2:b2),
c1)
a1 b1 c1
1 2 8 7
2 4 10 8
3 6 12 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.