在一个tibble中,我的值是另一个tibble中的变量名。我需要以快速的方式列出第一个tibble每行中包含的列名的第二个tibble中特定行中的值。我如何才能做到这一点?
我的数据具有以下形式:
# Observations in is tibble says which variables of the tibble_b occurred at each case:
tibble_a <- tribble(
~a, ~b, ~c,
4, 2, 5,
4, 3, 1,
2, 5, 5
)
# This tibble contains values for the variables at different times:
tibble_b <- tribble(
~`1`, ~`2`, ~`3`, ~`4`, ~`5`,
100, 112, 98, 107, 85,
71, 76, 97, 80, 15,
2, 61, 54, 37, 42
)
字符串
我需要创建一个tibble,它包含tibble_b
中第一个数字的值,比如说,第一行,tibble_a
中的所有行。也就是说,基本上,要获得这个表格数据:
| 一|B| C|
| --|--|--|
| 107 | 112 | 85 |
| 107 | 98 | 100 |
| 112 | 85 | 85 |
我的问题是,tibble_a
有几十万行,当然,两者都有更多的列。因为我必须对tibble_b
的行索引的多个样本进行测试和比较,使用下面的方法非常耗时。
for(current_row in 1:nrow(tibble_a)) {
for(current_col in 1:3) {
tibble_of_results[[current_row, current_col]] <- tibble_b[[1, tibble_a[[current_row, current_col]]]]
}
}
型
有人能提出一个有效的方法来完成这项任务吗?
4条答案
按热度按时间ss2ws0br1#
字符串
您可以使用列的值到列索引
tibble_b
。例如,对于tibble_a[[1]]
:型
然后我们简单地使用
unlist
将其转换为向量。然后我们可以使用across(everything(), ...)
将这种方法应用于所有列。knsnq2tg2#
下面是使用
purrr
包的函数式编程方法:字符串
uz75evzq3#
字符串
创建于2023-12-28带有reprex v2.0.2
2hh7jdfx4#
如果只是
tibble_b
的第一行(不确定),我们可以这样做字符串
给
型
阅读有关
quickdf()
的更多信息第24.4.2章。