gpt4 book ai didi

返回 R 数据框中的行,其中每个组根据条件有最大值

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

您好,我有一个包含 2 列的简单数据框

scenario    item   ROA
0 -10 0 A 6.0
0 0 10 A 2.1
0 10 20 A 3.0
0 -30 0 B 0.5
10 0 0 B 1.0

我需要的是创建一种方法来调整每个项目的场景(仅正面或负面)并返回 ROA 最大值的行

例如,如果我将 A 设置为仅使用正面场景,将 B 设置为仅使用负面场景,我应该得到

    scenario    item   ROA
0 10 20 A 3.0
0 -30 0 B 0.5

scenario一栏的值是字符串不是数字,但是只有一个负号,如果有“-”号可以用条件检查。

消极的条件是字符串中有一个消极的字符,积极的条件是它没有。

在这里你可以创建一些示例数据

scenario    <- c("0 -10 0","0 0 10","0 10 20","0 -30 0","0 -30 0")
item <- c("A","A","A","B","B")
ROA <- c(6,2.1,3,0.5,1)

dfts <- data.frame(scenario=scenario, item=item, ROA=ROA )

感谢帮助

最佳答案

这里只是另一种方法:我使用了 base R 中的 strsplit 函数,该函数根据 sep 参数拆分字符串,这里是单个空格 ""。此函数返回与 x 长度相同的列表,其中列表的 ith<​​ 元素是 x[i] 的分隔元素。这里您的场景的每个元素的长度都是1。然后我选择了第二个分离元素并将其转换为数字类:

library(dplyr)
library(purrr)

dfts %>%
filter(map2_lgl(scenario, item, ~ (.y == "A" & as.numeric(strsplit(.x, " ")[[1]][2]) > 0) |
(.y == "B" & as.numeric(strsplit(.x, " ")[[1]][2]) < 0)))

scenario item ROA
1 0 10 20 A 3.0
2 0 -30 0 B 0.5

关于返回 R 数据框中的行,其中每个组根据条件有最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68722888/

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