【发布时间】:2020-12-07 22:14:05
【问题描述】:
我正在尝试提取每个数据点在 R 中燃烧的那一天的最高温度。我的数据框中的前 365 列对应于一年中的某一天(列名 '1'、'2'、...' 365') 和最后一列是数据点的标识符,包括列为一年中某一天的燃烧日 (colname 'dob')(值 = 1、2、...365)。对于每个数据点,我想在对应于燃烧日期的列中选择最大温度值,例如如果数据点在 227 上刻录,则将选择第 227 列中的最大温度值。编码很新,但这通常是我的想法:
>dput(data[1:3, c(1, 225,226,227,365, 366, 374)])
structure(list(`1` = c(645, 645, 645), `225` = c(900, 900, 900),
`226` = c(895, 895, 895), `227` = c(881, 881, 881), `365` = c(605,
605, 605), dob = c(227L, 222L, 222L), index = c("blossom_biscuit_1",
"blossom_biscuit_2", "blossom_biscuit_3")), row.names = c("1",
"2", "3"), class = "data.frame")
当前数据结构:
| 1... | ...222... | 226 | 227... | ...365| **dob** | index |
|:---------:|:---------:|:----:|:---------:|:-----:|:-------:|:----------------|
| 645 | 900 | 895 | **881** | 605 | **227** |blossom_biscuit_1|
| 645 | **900** | 895 | 881 | 605 | **225** |blossom_biscuit_2|
所需的数据结构:
| 1... | ...222... |226| 227...|...365| dob | index |**dob_tmmax**|
|:------:|:---------:|:-:|:-----:|:----:|:---:|:-----------------|:-----------:|
| 645 | 900 |895| 881 | 605 | 227 | blossom_biscuit_1| 881 |
| 645 | 900 |895| 881 | 605 | 225 | blossom_biscuit_2| 900 |
for 循环的模糊想法来完成这个?
data %>% filter(
for (i in data) {
dob = data$dob
x = c(data[i, dob])
dob_tmmax <- c(data[i, x])
return(data$dob_tmmax)
})
【问题讨论】:
-
你能举一个小例子来更好地理解这个问题以及预期的输出
-
请使用
dput或我们可以复制和使用的东西添加数据。还显示共享数据的预期输出。了解how to ask a good question 和how to give a reproducible example。 -
@akrun 希望我所做的编辑对您有所帮助,感谢您的反馈
-
@RebeccaNaekoWeber 我根据您的示例更新了帖子。谢谢