数据框是最常见的数据结构,一般来讲,从csv或txt文件读入时就会自动存储为数据框对象。
与矩阵不同的是,矩阵只可以存储一种数据类型,而数据框可以存储多种类型,但是每一列必须为相同的数据类型
1.创建数据框
(1)从外部读入
# 读入一个txt,csv等格式数据,即自成一个数据框
movie = read.csv("电影数据.csv", fileEncoding = "UTF-8", stringsAsFactors = F)
class(movie)
## [1] "data.frame"
(2)自己创建
# 自己创建
star1 = c("邓超", "赵丽颖", "郭富城", "周润发", "杰克布莱克", "汤唯", "白敬亭", "陈晓", "梁家辉", "姚晨", "宋茜", "黄宗泽", "黄晓明")
birthyear = c(1979, 1987, 1965, 1955, 1969, 1979, 1993, 1987, 1958, 1979, 1987, 1980, 1977)
gender = c("男", "女", "男", "男", "男", "女", "男", "男", "男", "女", "女", "男", "男")
# 使用head()函数可以提取数据的前六行
stars = data.frame(star1, birthyear, gender); head(stars)
## star1 birthyear gender
## 1 邓超 1979 男
## 2 赵丽颖 1987 女
## 3 郭富城 1965 男
## 4 周润发 1955 男
## 5 杰克布莱克 1969 男
## 6 汤唯 1979 女
2.汇总
str()函数用来展示每列的数据类型,可以确定是连续的数值好事离散的因子
summary()函数是清洗数据的必备之选,可自动根据数据类型调整输出结果。具体来说,对于连续数据,它能给出输出数据的分位数值,对于类别数据(以factor存储形式),它能给出输出每个类别的数目统计,这样,各类数据样本是否平衡就一目了然。
str(movie)
## 'data.frame': 19 obs. of 11 variables:
## $ name : chr "叶问3" "美人鱼" "女汉子真爱公式" "西游记之孙悟空三打白骨精" ...
## $ boxoffice : num 77060 338583 6184 119957 111694 ...
## $ doubanscore: num 6.4 6.9 4.5 5.7 4 7.7 6.5 6.4 5 5.6 ...
## $ type : chr "动作" "喜剧" "喜剧" "喜剧" ...
## $ duration : int 105 93 93 120 112 95 131 108 95 102 ...
## $ showtime : chr "2016/3/4" "2016/2/8" "2016/3/18" "2016/2/8" ...
## $ director : chr "叶伟信" "周星驰" "郭大雷" "郑保瑞" ...
## $ star1 : chr "甄子丹" "邓超" "赵丽颖" "郭富城" ...
## $ index1 : int 11385 41310 181979 12227 16731 178 13499 14759 13251 6911 ...
## $ star2 : chr "张晋" "林允" "张翰" "巩俐" ...
## $ index2 : int 4105 9292 44277 8546 30277 1540 77260 755 9549 5614 ...
summary(movie)
## name boxoffice doubanscore type
## Length:19 Min. : 924.9 Min. :3.400 Length:19
## Class :cha