R 对多列的操作会占用许多表
我有两张桌子(dt1,dt2)。dt2包含与dt1相同的变量名称。 对于dt1中的每个变量,我想将其与dt2中的值相乘。 在下面的示例中,dt1中的x与4相乘,y与7相乘。 快速的方法是什么? 多谢各位R 对多列的操作会占用许多表,r,multiple-columns,frame,R,Multiple Columns,Frame,我有两张桌子(dt1,dt2)。dt2包含与dt1相同的变量名称。 对于dt1中的每个变量,我想将其与dt2中的值相乘。 在下面的示例中,dt1中的x与4相乘,y与7相乘。 快速的方法是什么? 多谢各位 set.seed(123) dt1 <- data.frame(x = sample(1:10, 10, TRUE), y = sample(1:10, 10, TRUE) ) dt1 dt2 = data.frame (names = c("x", &
set.seed(123)
dt1 <- data.frame(x = sample(1:10, 10, TRUE), y = sample(1:10, 10, TRUE) )
dt1
dt2 = data.frame (names = c("x", "y"), values = c(4, 7))
dt2
set.seed(123)
dt1您可以尝试sweep
> sweep(dt1, 2, dt2$values[match(dt2$names, names(dt1))], "*")
x y
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
或
>dt1[]dt1
xy
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
您可以尝试扫描
> sweep(dt1, 2, dt2$values[match(dt2$names, names(dt1))], "*")
x y
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
或
>dt1[]dt1
xy
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
purrr
风格
map2_df(dt1, dt2 %>% pivot_wider(names_from = names, values_from = values), ~.y * .x)
# A tibble: 10 x 2
x y
<dbl> <dbl>
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
map2\u df(dt1,dt2%>%pivot\u更宽(names\u from=names,values\u from=values),~.y*.x)
#一个tibble:10x2
xy
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
purrr
风格
map2_df(dt1, dt2 %>% pivot_wider(names_from = names, values_from = values), ~.y * .x)
# A tibble: 10 x 2
x y
<dbl> <dbl>
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70
map2\u df(dt1,dt2%>%pivot\u更宽(names\u from=names,values\u from=values),~.y*.x)
#一个tibble:10x2
xy
1 12 35
2 12 21
3 40 63
4 8 63
5 24 63
6 20 21
7 16 56
8 24 70
9 36 49
10 40 70