1.今天测试了一个which的用法:
a<-c(5,4,3,2)
b<-2
which(b %in% a)
> which(b %in% a)
[1] 1(为嘛不是4?)
which(a %in% b)
> which(a %in% b)
[1] 4
注意事项:
(1)which是用来返回下标的,判断条件是否为真,若为真,返回下标;
x%in%y是用来判断x是否为y中的元素;
(2)将上述例子改成
a<-c(5,2,3,2)
b<-2
which(b %in% a)
> which(b %in% a)
[1] 1
a<-c(5,1,3,1)
b<-2
which(b %in% a)
结果为:
> which(b %in% a)
integer(0)
所以which(x%in%y)是用来判断x是否为y中的元素,若是,返回x对应的元素的下标,而不是y中对应的下标。
2 R中的sort,rank与order
> x<-c(97,93,85,74,32,100,99,67)
> x
[1] 97 93 85 74 32 100 99 67
> sort(x) #按元素大小排序,默认为升序
[1] 32 67 74 85 93 97 99 100
> rank(x) #按元素大小排序,输出的是排序后元素所在的位置
[1] 6 5 4 3 1 8 7 2
> order(x) #对应的元素所在原向量中的位置
[1] 5 8 4 3 2 1 7 6
3.R语言中写SQL语句
(1)利用sqldf包
eg
library(sqldf)
install.packages("sqldf")
newdf<-sqldf("select * from mtcars where carb=1 order by mpg",row.name=TRUE) #调用mtcars数据集
sqldf("select avg(mpg) as avg_mpg,avg(disp) as avg_disp,gear from mtcars where cyl in (4,6) group by gear")
(2)利用RODBC
先建立数据源
eg
ibrary(RODBC)
channel <- odbcConnect("mysql_data", uid="abc", pwd="abc")
sqlTables(channel) #查看数据中的表
data<-sqlFetch(channel,"abc") # 查看表的内容,存到数据框里
4.R语言之 : 使用
默认的是加1
eg: