df1
1 2 3 4 5 ...53
0 0 0 0 0
...
上面df中的列位于8:60(列位置)的范围内
df2
Group.1 x
1 10
2 15
3 20
4 5
5 0
...53
df1中有8列来自8:60范围,df2中有53行
想法是将df1中的列名称与df2中的“ Group.1”列匹配为1-53,如果匹配,则使用df2中的“ x”列中的相应值填充df1中的列行
输出df1
1 2 3 4 5 ...53
10 15 20 5 0
我将如何去做呢?
谢谢,
tidyverse-packages将是一个解决方案:
library(tibble)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyr)
df1 <- tibble::tribble(
~"1", ~"2", ~"3", ~"4", ~"5",
0, 0, 0, 0, 0
)
df2 <- tibble::tribble(
~"Group.1", ~"x",
1, 10,
2, 15,
3, 20,
4, 5,
5, 0
)
df1_long <- df1 %>% tidyr::pivot_longer(
cols = dplyr::everything(),
names_to = "name",
values_to = "value"
)
df2_char <- df2 %>% dplyr::mutate(name = as.character(Group.1))
df <- df1_long %>% dplyr::left_join(df2_char, by = c("name"))
df_wide <- df %>%
dplyr::select(name, x) %>%
tidyr::pivot_wider(names_from = name, values_from = x)
由reprex软件包(v1.0.0)创建于2021-02-02
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句