【发布时间】:2021-12-21 04:57:18
【问题描述】:
我有两个数据集。 A 有两列: col1 为采样站编号,col2 为日期。 乙: col1 为采样站编号,col2 为日期,col3 为发现物种的年龄,col4 为温度值
例如
A<- matrix(c(1,"2011-07-15",2,"2011-07-20",3,"2011-07-15",4,"2011-07-18",5,"2011-07-20"),ncol=2,byrow=TRUE)
B<-matrix(c(1,"2011-07-12",3, 21, 2,"2011-07-20",4, 20,2,"2011-07-18",2, 20,3,"2011-07-15",10, 21,3,"2011-07-13",8, 22,3,"2011-07-12",7, 19,4,"2011-07-12",9, 19,4,"2011-07-10",7, 21,5,"2011-07-20",8, 21),ncol=4,byrow=TRUE)
>A
[,1] [,2]
[1,] "1" "2011-07-15"
[2,] "2" "2011-07-20"
[3,] "3" "2011-07-15"
[4,] "4" "2011-07-18"
[5,] "5" "2011-07-20"
> B
[,1] [,2] [,3] [,4]
[1,] "1" "2011-07-12" "3" "21"
[2,] "2" "2011-07-20" "4" "20"
[3,] "2" "2011-07-18" "2" "20"
[4,] "3" "2011-07-15" "10" "21"
[5,] "3" "2011-07-13" "8" "22"
[6,] "3" "2011-07-12" "7" "19"
[7,] "4" "2011-07-12" "9" "19"
[8,] "4" "2011-07-10" "7" "21"
[9,] "5" "2011-07-20" "8" "21"
我希望在表 A 中,每行都有一个 forloop,如果年龄小于 5 天,则取选项卡 B 的有效温度值,如果年龄大于或等于 5 天,则取该表 B 的平均温度车站。
我认为我可以做一个 forlloop 和一个 ifelse,同时我为表 A 中的 temparatura 创建了一个 NA 列。但我一直坚持如何编写代码。你能帮助我吗?谢谢
for(i in 1:nrow(A)){
ifelse(B$day<5, , )
}
我期望的输出是这样的新表 A
|col1|col2 |col3|
|1 |2011-07-12|21 |
|2 |2011-07-20|20 |
|3 |2011-07-15|20.5|
|4 |2011-07-12|20 |
|5 |2011-07-20|21 |
【问题讨论】:
-
欢迎来到 SO!您对预期输出的描述对我来说不是很清楚,因此如果您可以根据所需输入提供您期望的输出数据集,将会很有帮助。
-
请发布所需的输出(最好使用
dput(myoutput))
标签: r for-loop if-statement merge