R 数据分析(1) aggregate()和if()中的向量

时间:2020-05-28
本文章向大家介绍R 数据分析(1) aggregate()和if()中的向量,主要包括R 数据分析(1) aggregate()和if()中的向量使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

R aggregate() 的使用

像这种数据:

Rain: Hourly
Station,Date(NZST),Time(NZST),Amount(mm),Period(Hrs),Freq
22719,20160101,0000,0.0,1,H
37852,20160101,0000,0.0,1,H
22719,20160101,0100,0.0,1,H
37852,20160101,0100,0.0,1,H
22719,20160101,0200,0.0,1,H
37852,20160101,0200,0.0,1,H
22719,20160101,0300,0.0,1,H
37852,20160101,0300,0.0,1,H
22719,20160101,0400,0.0,1,H
37852,20160101,0400,0.0,1,H
22719,20160101,0500,0.0,1,H
37852,20160101,0500,0.0,1,H
22719,20160101,0600,0.0,1,H
37852,20160101,0600,0.0,1,H
22719,20160101,0700,0.0,1,H
.......
是按每个小时来统计降雨量的,而且每个小时还分两个站点,如果我们想获得每天的降雨量应该怎么办呢?
通过各种途径的查找,aggregate()函数可以轻松做到
用以下代码:

#rain_tmp是我的dataframe名字
rain_sum<-aggregate(Amount.mm. ~  Date.NZST.,data=rain_tmp,sum)

意思就是按照所有相同的Date.NZST这一列,把对应的Amount.mm.相加
结果是,获得了一个只包含Date.NZST和Amount.mm.两列的数据,每个Date只出现一次。

if()条件判断中使用向量会出现的问题

如果我们这样写:

c <-(1,8,4,12)
if(c>=10){
   return ("a")
}
else{
   return ("b")
}

期望得到的是一个向量("b","b","b","a")
但是得到的会是一个字符"b",因为函数只用了向量c的第一个元素

> test(c)
[1] "b"
Warning message:
In if (c >= 10) { : 条件的长度大于一,因此只能用其第一元素
test2<-function(c){
    return(c>=10)
}
test2(c)
> test2(c)
[1] FALSE FALSE FALSE  TRUE

再对向量中的TRUE和FALSE进行处理得到a和b

原文地址:https://www.cnblogs.com/raybu/p/12984320.html