基本操作:
查询变量类型(假设变量名是a)
class(a)
在R语言中:
T 代表--> True
F 代表--> False
与、或运算符
读取:
读取csv文件到dataframe(字符串不当作factor类型来处理,csv的na不作处理,不当成NaN对待,原封不动字符串)
df1 <- read.csv("", stringsAsFactors=F, na.strings = NULL)
读取系统库内数据
df1 <- iris
选取行(与一般语言不同,R语言第一行是从序号1开始,而不是序号0):
df1[1:4,]
选取列(假设选取2、3、4列)
df1[,2:4]
按照列名选取
df1[1:3,c("Sepal.Length", "Sepal.Width")]
把相应条件的列选取出来:
df1[df1$Sepal.Length > 7, ]
df1[df1$Sepal.Length > 7 & df1$Sepal.Width < 3, ]
对某列数据结构转换:
df1$Species = as.character(df1$Species)
# 如果不对字符串列进行转换,或者读取csv的时候字符串读成了factor,会报warning
# Warning message:
# In `[<-.factor`(`*tmp*`, ri, value = "adsf") : 因子层次有错,产生了NA
条件查找并遍历:
for (i in which(df$Sepal.Length > 7)){
print(df[i,])
}
对行或列进行apply操作:
1是行,2是列
apply(df, 1, function(x){x} )
对df进行groupby操作,并对每个group应用函数:
by(df, list(df$Species), FUN=function(x){
# do something
})
应用包library(dplyr)后的功能:
要重命名列的话
df1 <- rename(df1, tmp_new=col_old)
创建新列:
df %>% mutate(tmp="tmp")
mutate(df, tmp="tmp")
join操作:(两个df有不一样的列时,by部分可以填写=表达式。最后剩下左边这一列)
left_join(df1, df2, by=c("dfcol1"="dfcol2", "dfs.sef", "wef.wef"))
lapply操作(对list的apply操作,例如查看列名和类型)
ll <- lapply(df, class)
for(i in ll){
print(i)
}
技巧性特殊操作:
c("a", "b", "c") %in% c("a", "b")
[1] TRUE TRUE FALSE