gpt4 book ai didi

R - Dplyr - get() 不适用于每一列,只使用第一次出现

转载 作者:行者123 更新时间:2023-12-04 08:09:14 25 4
gpt4 key购买 nike

我有一个看起来像这样的 DF:

V1  V2  V3  V4  V5  V6
1251 V5 12 7 13 91
126 V5 17 9 75 90
912 V6 55 34 88 22
我正在尝试获取 V2 中引用的列的值。
对于第 1 行和第 2 行,第 V2 列引用 V5 .对于第 3 行,V2 引用 V6使用 dplyr 我试图获取 V2 中引用的列的对应值。
df %>%
mutate(V2_ref_value = get(V2)) %>%
select(V1, V2, V2_ref_value)
这将返回一个奇数 df:
V1  V2  V2_ref_value
1251 V5 13
126 V5 75
912 V6 88
显示了第 1 行和第 2 行的正确值,但第 3 行还显示了其来自 V5 列的值,而不是其引用列 V6 中的值。
正确的输出应该是:
V1  V2  V2_ref_value
1251 V5 13
126 V5 75
912 V6 22
有谁知道为什么会发生这种情况或我如何解决这个问题?

最佳答案

您需要按行执行它:

df %>%
rowwise() %>%
mutate(V2_ref_value = get(V2))

V1 V2 V3 V4 V5 V6 V2_ref_value
<int> <chr> <int> <int> <int> <int> <int>
1 1251 V5 12 7 13 91 13
2 126 V5 17 9 75 90 75
3 912 V6 55 34 88 22 22
或者你也可以做,不需要 rowwise() :
df %>%
mutate(V2_ref_value = Reduce(`+`, across(-c(V1:V2), ~ (cur_column() == V2) * .)))

关于R - Dplyr - get() 不适用于每一列,只使用第一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66065034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com