1 数据是由行组成的,集合数据成为数据框
可以,将每个行数据存到一行的数据框,将一行的数据框存为一个list。
用rbind do.call
> dfrm <- do.call(rbind, obs) obs是一个list,包含一行的数据框的数据
2 如果是几个list ,又连接成一个list,要转化为数据框,可以如下操作
dfm <- do.call( rbind, Map(as.data.frame , objs) )
注意: 如果对于几个list ,又连接成一个list,对其使用do.call(rbind, obs),生成的依然是list
3 添加一行或者多行数据到dataframe
先创建一个新的dataframe来存这些行数据,然后用rbind() 来合起来
rbind 是告诉R 添加一个新行,而不是一个新的行
cbind 是添加一个新的列
4 不要对大型数据框,多次使用添加。这回让R反复重新分配数据结构,很慢
5 重新分配dataframe
> N <- 1000000
> dfrm <- data.frame(dosage=numeric(N), lab=character(N), response=numeric(N))
6 dataframe列的寻找
dfrm[n] 或者 dfrm[c(n1,n2,,,)] 返回dataframe
dfrm[[n]] 返回第几列 ,不是dataframe,是vector
dfrm[, n] 第几列
dfrm[, c(n1, n2, ..., nk)] 多个列
7 通过name查找dataframe
dfrm[["name"]]
dfrm$name 返回vector
dfrm["name"]
dfrm[c("name1", "name2", ..., "namek")] 返回dataframe
dfrm[, "name"]
dfrm[, c("name1", "name2", ..., "namek")] 返回vector
8 简易获取行或列 用subset函数 返回dataframe
> subset(dfrm, select=colname)
> subset(dfrm, select=c(colname1, ..., colnameN))
9 修改行列的名字
> colnames(dfrm) <- newnames # newnames is a vector of character strings
> as.data.frame(mat) 转换为dataframe
10 list的转换
> dfrm <- as.data.frame(lst)
> colnames(dfrm) <- c("before","treatment","after")
11 编辑dataframe 用edit()
在界面生成一个表格,可以用于修改数据
也可以用fix() , 但是是直接修改,不可以恢复了就、
12 消除NA 用na.omit ()
注意:将会移除包含NA的一整行,而不是仅仅移除NA值
13 在dataframe中删除列
> subset(dfrm, select = -badboy) # All columns except badboy
删除了 badboy列
14 合并两个dataframe, 使用cbind()函数 或者 rbind 函数
rbind要求列的数目和name一样
15 也可以用merge()
> m <- merge(df1, df2, by="name")
16 简单地获取dataframe数据
> with(dataframe, expr)
> z <- (suburbs$pop - mean(suburbs$pop)) / sd(suburbs$pop) 等价于
> z <- with(suburbs, (pop - mean(pop)) / sd(pop))
17 attach() 和 detach() 分别将dataframe载入本地,即可以直接使用dataframe中的数据,和删除本地
18 转换类型 转换失败得到NA
• as.character(x)
• as.complex(x)
• as.numeric(x) or as.double(x)
• as.integer(x)
• as.logical(x)
19 转换数据类型
• as.data.frame(x)
• as.list(x)
• as.matrix(x)
• as.vector(x)
细节请看164---165页