簡體   English   中英

通過根據另一個數據框中列的值從一個數據框中提取列來創建新數據框

[英]creating a new data frame by extracting columns from one data frame based on the value of column in another data frame

我有一個數據框 df1 在此處輸入圖像描述

我有另一個數據框 df2 在此處輸入圖像描述

我想要的是合並這兩個,這樣我得到 df3 如下

在此處輸入圖像描述

我嘗試了以下

df3 <- cbind(
  df1,
  t(df2[,df1$Pool])
)

我得到的 output 是

在此處輸入圖像描述

我試圖生成一些與您放入圖像的數據幀具有相同結構的數據幀,但我無法重現您的行為。

例如:

df1=data.frame(cus_id=sample(1:100, 6), pool=c("risk_7", "risk_5", "risk_5", "risk_5", "risk_6", "risk_5"))

df1
  cus_id   pool
1     45 risk_7
2     70 risk_5
3     16 risk_5
4     50 risk_5
5      4 risk_6
6     92 risk_5

然后我生成了一個與你的 df2 大小相同的隨機數矩陣

the_numbers=matrix(rnorm(7*12),nrow=12)
df2=data.frame(1:12, the_numbers)
colnames(df2)=c("month", paste0("risk_", 1:7) )
head(df2)
  month      risk_1     risk_2      risk_3      risk_4      risk_5     risk_6       risk_7
1     1 -1.59589907  0.1938683 -0.09493059  1.40832914 -0.90416011 -0.3109643 -0.006606488
2     2  0.18909151  0.4302865  0.02042977  0.19644788  0.70734127  0.7787293  0.205113981
3     3  0.08839232  0.2060647 -0.53347739  1.28622444  0.41543447 -0.1872887 -0.145648466
4     4 -0.80375643  0.6664508 -0.42402686 -1.11301225  0.09023515 -1.1364959  1.401697819
5     5 -0.59077651  0.4874996  0.49586008 -0.04683787  0.33829197  1.4111230 -1.869269180
6     6  0.32643525 -0.9703614 -1.30666881  2.21348141  0.42064366 -0.7783622 -1.107047330

和你一樣,我使用了 cbind(雖然我使用了 as.data.frame,否則數字會被轉換為字符):

df3=cbind(df1, as.data.frame(t(df2[,df1$pool])))
head(df3)
         cus_id   pool           V1        V2         V3          V4        V5         V6         V7         V8         V9        V10        V11        V12
risk_7       45 risk_7 -0.006606488 0.2051140 -0.1456485  1.40169782 -1.869269 -1.1070473 -0.1663397 -0.8709996  2.7316702 -0.8464295 -0.5886028  0.6179186
risk_5       70 risk_5 -0.904160114 0.7073413  0.4154345  0.09023515  0.338292  0.4206437 -1.6158471  0.8545650  1.6074374 -0.8418230 -0.0808034 -0.6900303
risk_5.1     16 risk_5 -0.904160114 0.7073413  0.4154345  0.09023515  0.338292  0.4206437 -1.6158471  0.8545650  1.6074374 -0.8418230 -0.0808034 -0.6900303
risk_5.2     50 risk_5 -0.904160114 0.7073413  0.4154345  0.09023515  0.338292  0.4206437 -1.6158471  0.8545650  1.6074374 -0.8418230 -0.0808034 -0.6900303
risk_6        4 risk_6 -0.310964343 0.7787293 -0.1872887 -1.13649592  1.411123 -0.7783622  1.8605113 -0.3938183 -0.7335341  1.0610378  0.1573779 -0.1681913
risk_5.3     92 risk_5 -0.904160114 0.7073413  0.4154345  0.09023515  0.338292  0.4206437 -1.6158471  0.8545650  1.6074374 -0.8418230 -0.0808034 -0.6900303

我相信你的df2有問題,也許你已經覆蓋了它?

暫無
暫無

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

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