一般用data.frame,Python中也是,只不过是pd.DataFrame
#######R语言数据分析#############
###1.创建数据框##
df <- data.frame(
"grammer" = c("Python","C","Java","GO",NA,"SQL","PHP","Python"),
"score" = c(1,2,NA,4,5,6,7,10))
#1.1 第二种
library(tibble)
df <- tibble(
"grammer" = c("Python","C","Java","GO",NA,"SQL","PHP","Python"),
"score" = c(1,2,NA,4,5,6,7,10)
)
# 也可用tibble
会用到’$'和which函数
df[which(df$grammer == 'Python'),]
names(df)
tidyverse需要安装一下,
install.packages(‘tidyverse’)
########4.修改列名#############
library(tidyverse)
df = df %>% rename(popularity = score)
df
其中%>%为管道函数
自行查看管道函数的说明
特别的,这种方法只针对tibble创建的数据框,dataframe不行,会报错.ni try yi try
########5.字符统计##########
table(df$grammer)
########6.缺失值处理##########
df['popularity'] = df['popularity'].fillna(df['popularity'].interpolate()
library(Hmisc)
index <- which(is.na(df$popularity))
index # 返回popularity
df$popularity <- impute(df$popularity,(unlist(df[index-1, 2] + df[index+1, 2]))/2)
# 缺失值的上下行取均值进行填充
# df[行,列]
如果出现下面情况,请使用install.packages(‘包名’)安装即可,以后出现都按此步骤
Error in library(Hmisc) : 不存在叫‘Hmisc’这个名字的程辑包
#####7.数据提取########
df %>% filter(popularity > 3)
# 也可以使用
df[df$popularity > 3,]
#####8.数据去重######
df[!duplicated(df$grammer),] # 只保留第一次出现的
df# df原始数据并未发生变化,也就是没有在原数据上改动
#######9.数据计算######
mean(df$popularity) # 计算popularity的均值(数值型)
# 等价
df %>% summarise(mean = mean(popularity))
#######10.格式转换#####
unlist(df$grammer) # 转为list
####11.数据保存########
# 第一种
library(readr)
write_excel_csv(df,'filename.csv')
# 第二种
library(openxlsx)
openxlsx::write.xlsx(df,'filename.xlsx')
# 第三种 强烈不推荐
Sys.getenv("JAVA_HOME")
install.packages('rJava')
install.packages("xlsxjars")
library(rJava)
library(xlsxjars)
xlsx::write.xlsx(df,'filename.xlsx')
dim(df)
####13.数据提取######
# 提取popularity列值大于3小于7的行
library(dplyr)
df %>% filter(popularity > 3 & popularity <7)
# 等价写法
df[(df$popularity > 3) & (df$popularity < 7),]
就是选择列名,然后提取出来
#####14.位置处理#######
# 交换两列的位置
df <- df %>%
select(popularity,everything())
# everything(): Matches all variables.匹配所有的变量
starwars %>% select(homeworld, height, mass)
starwars
########15.数据提取##########
# 提取popularity列最大值所在行
df %>% filter(popularity == max(popularity))
# 等价
df[df$popularity==max(df$popularity),]
######16.数据查看#####
# 查看前,最后5行数据
head(df,5)
tail(df,5)
########17.数据修改#########
# 删除最后一行
df[-dim(df)[1],] # dim(df)[1]返回8
# 等价写法
df %>% filter(rownames(df) != max(rownames(df)))
filter真的很好用!!!
######18.数据修改########
# 添加一行数据['Perl',6.6]
row = c(6.6,'Perl') # 需要和列位置对应
df = rbind(df,row)
df
另一种解法
row <- data.frame(
"grammer" = c("Perl"),
"popularity" = c(6.6)
)
这里也可以去掉c()。直接赋值
对’popularity’列值的大小进行排序
df <- df %>%
arrange(popularity)
统计每个字符的长度
library(Hmisc)
library(stringr)
df$grammer <- impute(df$grammer,'R') # 缺失值填充
str_length(df$grammer) # 返回一个字符统计的向量
df$len_str <- str_length(df$grammer) # 重新将这向量数据,组合到数据框中。
用到str_length()函数
第一期这些关键的函数,必须要会熟练的掌握。比如which、impute、filter…