用r,data.frame的格式为ID _hr0 _hr1 _hr2 _hr4 _hr8 _hr12 _hr16 _hr24 _hr36,找到并列出数值随列依次增高的行
时间: 2023-06-24 10:03:56 浏览: 36
可以使用以下代码实现:
```r
# 创建示例数据
df <- data.frame(ID = c(1,2,3,4),
_hr0 = c(4,2,5,3),
_hr1 = c(2,4,3,1),
_hr2 = c(5,3,1,4),
_hr4 = c(3,1,4,2),
_hr8 = c(1,5,2,4),
_hr12 = c(4,2,5,3),
_hr16 = c(2,4,3,1),
_hr24 = c(5,3,1,4),
_hr36 = c(3,1,4,2))
# 查找数值随列依次增高的行
result <- df[apply(df[, -1], 1, function(x) all(diff(x) > 0)), ]
```
解释一下上述代码:
首先创建了一个示例数据框 `df`,它包含了 `ID` 和若干个 `_hrX` 列,其中 `X` 表示小时数。你的数据框应该也是类似的格式。
然后使用 `apply()` 函数,对 `df` 中除了 `ID` 列以外的所有列(即 `df[, -1]`)进行操作。`apply()` 函数第一个参数是要操作的矩阵或数组,第二个参数是 `MARGIN`,表示操作的维度。这里我们使用 `MARGIN=1`,表示对行进行操作。第三个参数是一个函数,表示对每一行进行的操作。这里我们使用了一个匿名函数,它对每一行计算了相邻两个数的差值,并检查是否都是正数。如果是,则返回 `TRUE`,否则返回 `FALSE`。
`apply()` 函数返回的结果是一个逻辑向量,长度等于行数。`result <- df[...]` 语句将逻辑向量作为下标,从 `df` 中选出符合条件的行,存储到 `result` 变量中。