R语言 如何将一个数据框中行中的数据与另一个数据框中的列名进行匹配?

wz3gfoph  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(185)

我有两个数据框。一个是2021年所有服务调用的详细信息,我将其命名为data_1。第二个是代码文件,允许您将编码字段转换为正常描述,我将其命名为code_file。code_file看起来如下所示
| 身份证|码值|描述|
| - ------|- ------|- ------|
| abc. 1|021|采取的行动|
| abc二|零七八|搜索与救援|
| inc.type|小行星7845|运输|
包含所有调用的详细信息的data_1 df如下所示
| 状态|inc.type|abc. 1|abc二|城市|
| - ------|- ------|- ------|- ------|- ------|
| 佛罗里达州|三二一|三十三|四十四|ORL标准|
| 佛罗里达州|七八一|五十九|三一七|迈阿密|
| 佛罗里达州|七七七|0154|四四一|迈阿密|
如何合并这两个数据框,使code_file中"id"列的值与data_1中的列名匹配?
| 状态|inc.type|abc. 1|abc二|城市|码值|描述|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 佛罗里达州|三二一|三十三|四十四|ORL标准|021|采取的行动|
| 佛罗里达州|七八一|五十九|三一七|迈阿密|零七八|搜索与救援|
| 佛罗里达州|七七七|0154|四四一|迈阿密|小行星7845|运输|
输出应如下所示
我没有任何代码,因为我现在挣扎。

p5cysglq

p5cysglq1#

也许吧

library(dplyr)
library(tidyr)
df2 %>% 
 mutate(rn = row_number()) %>%
 pivot_longer(cols = all_of(df1$id), names_to = 'id') %>% 
 left_join(df1) %>%
  pivot_wider(names_from = 'id', values_from = value)%>% 
  group_by(rn) %>% 
  fill(all_of(df1$id), .direction = "downup") %>% 
  slice(cur_group_id()) %>% 
  ungroup %>% 
  select(any_of(union(names(df2), names(df1)))
  • 输出
# A tibble: 3 × 7
  state inc.type abc.1 abc.2 city  codevalue descr            
  <chr>    <int> <int> <int> <chr>     <int> <chr>            
1 FL         321    33    44 ORL          21 Action taken     
2 FL         781    59   317 MIAMI        78 search and rescue
3 FL         777   154   441 MIAMI      7845 transport

数据

df1 <- structure(list(id = c("abc.1", "abc.2", "inc.type"), codevalue = c(21L, 
78L, 7845L), descr = c("Action taken", "search and rescue", "transport"
)), class = "data.frame", row.names = c(NA, -3L))

df2 <- structure(list(state = c("FL", "FL", "FL"), inc.type = c(321L, 
781L, 777L), abc.1 = c(33L, 59L, 154L), abc.2 = c(44L, 317L, 
441L), city = c("ORL", "MIAMI", "MIAMI")), 
class = "data.frame", row.names = c(NA, 
-3L))

相关问题