gpt4 book ai didi

r - 如何根据其他数据帧中的信息减去 R 数据帧列?

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

我有一个数据框,我想向其中添加新列,但计算取决于另一个包含指令的数据框中的值。

我在下面创建了一个可重现的示例(尽管实际上还有很多列),

输入数据框:

base <- data.frame("A"=c("orange","apple","banana"),
"B"=c(5,3,6),
"C"=c(7,12,4),
"D"=c(5,2,7),
"E"=c(1,18,4))
key <- data.frame("cols"=c("A","B","C","D","E"),
"include"=c("no","no","yes","no","yes"),
"subtract"=c("na","A","B","C","D"),
"names"=c("na","G","H","I","J"))

所需的输出数据帧:

output <- data.frame("A"=c("orange","apple","banana"),
"B"=c(5,3,6),
"C"=c(7,12,4),
"D"=c(5,2,7),
"E"=c(1,18,4),
"H"=c(2,9,-2),
"J"=c(-4,16,-3))

keys 数据框在基础数据框中的每一列都有一行,还有一个“include”列必须设置为“yes”才能完成任何计算。如果它设置为是,那么我想添加一个新列,该列具有定义的名称,该名称减去给定的列。

例如,基础数据框中的“C”列设置为包含,因此我想创建一个名为“H”的新列,其中包含“C”列中的值减去“B”列中的值。

我以为我可以用一个循环来做到这一点,但我的尝试没有成功,我的搜索也没有找到任何有用的东西(我有点新)。任何帮助将不胜感激。

session 信息():R 版本 3.4.2 (2017-09-28)平台:x86_64-w64-mingw32/x64(64 位)运行于:Windows 10 x64 (build 18363)

矩阵乘积:默认

语言环境:[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252

附加基础包:[1] stats graphics grDevices utils datasets 方法库

通过命名空间加载(而不是附加):[1] compiler_3.4.2 tools_3.4.2

最佳答案

这是一个基本的 R 选项

k <- subset(key, include == "yes")
output <- cbind(base,setNames(base[k[["cols"]]]-base[k[["subtract"]]],k$names))

我们会得到

> output
A B C D E H J
1 orange 5 7 5 1 2 -4
2 apple 3 12 2 18 9 16
3 banana 6 4 7 4 -2 -3

关于r - 如何根据其他数据帧中的信息减去 R 数据帧列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63808318/

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