gpt4 book ai didi

r - 在其他数据框中排序和查找值

转载 作者:行者123 更新时间:2023-12-02 00:30:08 25 4
gpt4 key购买 nike

我有一个名为 commodities_3 的数据框。它包含 28 列不同的商品和 403 行代表月末数据。我需要的是分别找到每一行的位置:

  • 最大值,
  • 最小值,
  • 所有其他优点
  • 所有其他否定

然后应使用这些索引在另一个具有相同列和行特征的名为 commodities_3_returns 的数据框中定位相应的数据。然后应将这些数据复制到 4 个新数据帧(每次排序一个数据帧)。

我知道如何使用 which 和 which.min 和 which.max 找到每行值的位置。但我不知道如何将其放入循环中以便对所有 403 行执行此操作。以及随后如何使用此数据在其他数据帧 commodities_3_returns 中定位相应的数据。


不幸的是,我必须使用数据框,因为我在其中有日期作为行名,我必须保留它,因为我以后需要它们进行索引以及 NA。它看起来像这样:

commodities_3 <- as.data.frame(matrix(rnorm(15), nrow=5, ncol=3))
mydates <- as.Date(c("2011-01-01", "2011-01-02", "2011-01-03", "2011-01-04", "2011-01-05"))
rownames(commodities_3) <- mydates
commodities_3[3,2] <- NA


commodities_3_returns <- as.data.frame(matrix(rnorm(15), nrow=5, ncol=3))
mydates <- as.Date(c("2011-01-01", "2011-01-02", "2011-01-03", "2011-01-04", "2011-01-05"))
rownames(commodities_3_returns) <- mydates
commodities_3_returns[3,3] <- NA

正如我所说,我总共有 403 行和 27 列。在每一行中,都有一些我必须保留的 NA。 max.col 似乎无法处理 NA。

对于上面提到的例子,我想要的输出是这样的:

max_values <- as.data.frame(matrix(data=c(1:5,3,2,1,3,1), nrow=5, ncol=2, byrow=F))

最佳答案

如果 commodities_3 中的所有列都是数字,那么您需要一个矩阵,而不是数据框。然后使用 apply 函数。一些示例数据,用于重现。

commodities_3 <- matrix(rnorm(12), nrow = 4)
commodities_3_returns <- matrix(1:12, nrow = 4)

统计数据。

mins <- apply(commodities_3, 1, which.min)
maxs <- apply(commodities_3, 1, which.min)
pos <- apply(commodities_3, 1, function(x) which(x > 0)) #which is optional
neg <- apply(commodities_3, 1, function(x) which(x < 0))

现在在 commodities_3_returns 的索引中使用这些。在没有咖啡的情况下,我的大脑只有一个带有 for 循环的笨拙解决方案

n_months <- nrow(commodities_3_returns)
min_returns <- numeric(n_months)
for(i in seq_len(n_months))
{
min_returns[i] <- commodities_3_returns[i, mins[i]]
}

关于r - 在其他数据框中排序和查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345643/

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