gpt4 book ai didi

r - 如何使用基于现有数据框的值和 R 中数值向量的范围创建新数据框。

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

我有一个 96 x 48 的数据框 df。第一列是标识字段 (char),第 2 - 48 列是数值。我还有两个数值向量,每个向量有 96 个元素,由对应于每一行的上限和下限组成。

我想创建一个具有相同第 1 列的新数据框,但对于第 2-48 列,我想查看该值是否介于每行的两个向量中的值之间。然后我想在新数据框中有 1 如果是,如果不是则为 0(某种 bool 值)。

例子:

df:

    1  2  3  4 .. 48    a  7  11 15   58    b  6  9  13   46    c  8  14 20   73 

载体:

    upper: 24, 35, 22, 63    lower: 10, 11, 12, 11

返回:

    1  2  3  4 .. 48      a  0  1  1    0   (between upper[1] and lower[1])    b  0  0  1    0   (between upper[2] and lower[2])    c  0  1  1    0   ...

我想在没有循环的情况下执行此操作,因为我很确定有一种方法可以执行此操作,但我似乎找不到它。

最佳答案

一种使用dplyr的方法:

# Data
df <- data.frame(id=letters[1:3], col2=c(7,6,8), col3=c(11,9,14), col4=c(15,13,20), col48=c(58,46,73))

# chain of operations
library(dplyr)
df %>%
mutate(upper = c(24, 35, 22), lower = c(10, 11, 12)) %>%
mutate_at(paste0("col", c(2:4, 48)), funs(.>=lower & .<=upper)) %>%
mutate_at(paste0("col", c(2:4, 48)), as.integer) %>%
select(-lower, -upper)

输出:

  col1 col2 col3 col4 col48
1 a 0 1 1 0
2 b 0 0 1 0
3 c 0 1 1 0

关于r - 如何使用基于现有数据框的值和 R 中数值向量的范围创建新数据框。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453220/

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