簡體   English   中英

如何將兩個小標題或數據幀中的值粘貼到 R 中的組合顯示表中?

[英]How can I paste values from two tibbles or dataframes together into a combined display table in R?

我有興趣將兩個不同表中的值顯示為一個組合表,並在同一單元格中顯示值和百分比。

我有兩個數據框,

pf<-data.frame(alpha=c(17,42,19),beta=c(21,47,15),sea=c(19,43,21))

cf<-data.frame(alpha=c(417,242,119),beta=c(721,447,315),sea=c(819,443,921))

百分比以pf為單位,今年的原始值以cf 為單位

我想要的輸出是:

desired<-data.frame(alpha=c("417 (17%)","242 (42%)","119 (19%)"),
                    beta=c("721 (21%)","447 (47%)","315 (15%)"),
                    sea=c("819 (19%)","443 (43%)","921 (21%)"))

看起來像:

      alpha      beta       sea
1 417 (17%) 721 (21%) 819 (19%)
2 242 (42%) 447 (47%) 443 (43%)
3 119 (19%) 315 (15%) 921 (21%)

我希望有一個不需要在代碼中明確鍵入列名“alpha”等的解決方案,因為我的列在指向不同的源文件時會更改名稱。 行數也會改變,盡管 pf 和 cf 在維度上總是相互匹配。

似乎乘法或其他基本數學函數(其中兩個表彼此相關處理)很容易(即 pf*cf 快速返回執行關系乘法的值的表)。

在這一點上,我一直在試驗 paste0() 但得到了不可行的結果。

預先感謝您的任何幫助!

我們可以使用purrr map2

library(purrr)
map2_df(cf, pf, ~ sprintf("%d (%d%%)", .x, .y))
# A tibble: 3 x 3
#    alpha     beta      sea      
#   <chr>     <chr>     <chr>    
#1 417 (17%) 721 (21%) 819 (19%)
#2 242 (42%) 447 (47%) 443 (43%)
 #3 119 (19%) 315 (15%) 921 (21%)

或者如果它是浮動的,那么我們可以round

map2_df(cf, pf, ~ sprintf("%d (%f%%)", .x, round(.y, 2)))

您使用mapplypaste0 base選項:

as.data.frame(mapply(function(x, y) paste0(x, "(", y, "%)"), cf, pf))

     alpha     beta      sea
1 417(17%) 721(21%) 819(19%)
2 242(42%) 447(47%) 443(43%)
3 119(19%) 315(15%) 921(21%)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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