R--数据框

创建数据框

kids <- c("jack","jill")
ages <- c(12,10)
#不让字符向量转换为因子
d <- data.frame(kids,ages,stringsAsFactors = F)
d```

#数据框也可以看成一种列表,所以有以下访问方式

d[["kids"]]
d[[1]]
d$kids

也可以使用矩阵的形式访问

d[,1]

str()查看d的内部结构

str(d)

表示两个观测存储于两个变量之中```

读取文件数据table format

examsquiz <- read.table("exams",header = T)
#read.table() reads a file in table format and creates a data frame from it```

exam1 <- c(2.0,3,4,2.3,2.3,3.3)
exam2 <- c(3.3,2.0,4.0,0.0,1.0,3.7)
Quiz <- c(4.0,3.7,4.0,3.3,3.3,4.0)
d <- data.frame(exam1,exam2,Quiz)```

提取子数据框,类似于矩阵操作

#按行提取子数据框
d[2:5,]
d[2:5,2]
#上面一条命令由于提取出来是向量,R会自己创建一个向量而不是数据框
#使用drop=F可以得到一个数据框
d[2:5,2,drop=F]
#做筛选,选出第一个变量大于3的所有行,注意筛选语句后面有,表示取行
d[d$exam1 > 3,]
#d$exam1 > 3返回的是一个logical型的向量,而d[]将其作为参数会把值为TRUE的作为索引```

#缺失值的处理

设置na.rm=T来使R忽略缺失值

x <- c(2,NA,4)
mean(x)
mean(x,na.rm = T)

subset()函数默认已经指定na.rm=T所以直接可以处理掉缺失值

subset(x,x>1)

对于数据框

subset(d,exam1>3)

有些情况需要从数据框去掉一个或者以上的缺失值的观测

使用complete.cases()函数

kids <- c("jack",NA,"jillian","john")
states <- c("CA","MA","MA",NA)
d1 <- data.frame(kids,states)
complete.cases(d1)

选取完整的行

d1[complete.cases(d1),]```

使用cbind()和rbind()函数

#rbind()添加新行,添加的行通常是数据框或者列表
rbind(d,list("laura",19))
#cbind()添加新列,要求新列和原有的列长度相同
#但是可以通过循环补齐,添加长度不同的列
d$age <- 1
#使用原有的列添加新列
eq <- cbind(d,Quiz-exam2)
#添加的变量名太长,使用names()来修改变量名
names(eq)[5] <- "diff"
#或者这样来新建一个列
d$examdiff <- d$exam2 - d$exam1```

#apply()函数

对数据框的每一行(1表示每一行)使用max函数,求出每一个观测的最大值

apply(d,1,max)```

合并数据框

#根据两张表的共同变量的值组合到一起
kids <- c("jack","jill","jillian","john")
states <- c("MA","CA","MA","HI")
d1 <- data.frame(kids,states)
ages <- c(10,7,12,21)
d2 <- data.frame(kids,ages)
#根据相同变量kids将两个数据框合并到一起
#并且两个数据框相同变量的值相同的行才会合并到一起
d <- merge(d1,d2)
#merge()有by.x和by.y参数,标示出两个数据框里含有相同信息但是名称不同的两个变量
pals <- kids
ages <- c(12,10,7,3)
d3 <- data.frame(pals,ages)
#by.x指定前面的数据框中的列名,字符串
#by.y指定后面的数据框中的列名,字符串
merge(d1,d3,by.x = "kids",by.y = "pals")```

#应用于数据框的函数

lapply()函数里面的f()函数会作用于数据框的每一列

数据框是列表的特例,然后作用于列表是作用于每一个组件

返回值是在一个列表上,sapply()返回一个数据框

d1 <- lapply(d,sort)

返回的数据框字符串是排序好的索引值

d2 <- sapply(d,sort)```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容