gpt4 book ai didi

r - 按条件 (>) 计算每行的列数

转载 作者:行者123 更新时间:2023-12-02 03:32:23 25 4
gpt4 key购买 nike

我试图计算出矩阵的每一行有多少列的值大于指定值。很抱歉我问了这个简单的问题,但我无法弄清楚。

我从多年栅格的栅格堆栈中提取了我感兴趣的一些空间点的最大温度值。数据看起来类似于:

data <- cbind('1990' = c(25, 22, 35, 42, 44), '1991' = c(23, 28, 33, 40, 45), '1992' = c(20, 20, 30, 41, 43))

1990 1991 1992
1 25 23 20
2 22 28 20
3 35 33 30
4 42 40 41
5 44 45 43

我想得到每个地点气温高于 30 度的年数,例如:

    yr.above   
1 0
2 0
3 2
4 3
5 3

我尝试了一些方法,但它们不起作用并且非常不合逻辑(例如尝试 length(data[1:length(data), which(blah blah does not make sense)) 或 apply(data, 1, length(data) > 30),我知道这些没有意义,但我有点卡住了。

最佳答案

这将为您提供您正在寻找的向量:

rowSums(data > 30)

无论data是矩阵还是data.frame,它都可以工作。此外,它使用向量化函数,因此是优于使用 apply 的首选方法,后者只不过是一个(缓慢的)for 循环。

如果 data 是 data.frame,您可以通过执行以下操作将结果添加为列:

data$yr.above <- rowSums(data > 30)

或者如果data是一个矩阵:

data <- cbind(data, yr.above = rowSums(data > 30))

您还可以创建一个全新的 data.frame:

data.frame(yr.above = rowSums(data > 30))

或者一个全新的矩阵:

cbind(yr.above = rowSums(data > 30))

关于r - 按条件 (>) 计算每行的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18862114/

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