簡體   English   中英

R dplyr:使用 dplyr 將列集添加到其他列集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM