2.4.5 数据框(data frame)的建立

统计分析中一个完整的数据集通常是由若干个观测值组成的,这些观察值不要求是同一类型,也不要求相同长度,在R中称为数据框,但是R中的数据框的意义不同,行和列的意义不一致,行表示观测,列表示变量,显示数据框时左侧会显示观测值的序号。

《1》数据框的直接建立

data.frame();

数据框中的向量必须有相同的长度或长度有倍数关系,如果一个比另一个短,他将按照循环法则“循环”整数次。(如果不是整数倍是要报错的,和前面的赋值循环有点区别)

Example:

> x<-c(12,13,15,17)
> y=1:4
> z = data.frame(Index = y, value = x)
> z
  Index value
1     1    12
2     2    13
3     3    15
4     4    17

《2》数据框的间接建立

read.table();

间接建立是指通过外部的文件(.txt;.xls;etc)读取。有header=T没有的区别在于列的框数。

Example:

> foo = read.table(file = 'd:/data.txt', header = T)
> foo
     start      end
1 12445063 12445979
2 14092846 14093753
3 44885230 44885994
4 46103076 46103330
5 59591409 59591612
> foo = read.table(file = 'd:/data.txt')
> foo
        V1       V2
1    start      end
2 12445063 12445979
3 14092846 14093753
4 44885230 44885994
5 46103076 46103330
6 59591409 59591612

《3》适用于数据框的函数

max();min();median();var();sd();sum();cumsum();cumprod();cummax();cummin();cov();cor();

summary();pairs();xtabs();

Example:
> foo = read.table(file = 'd:/data.txt', header = T)
> summary(foo)
     start               end         
 Min.   :12445063   Min.   :12445979 
 1st Qu.:14092846   1st Qu.:14093753 
 Median :44885230   Median :44885994 
 Mean   :35423525   Mean   :35424134 
 3rd Qu.:46103076   3rd Qu.:46103330 
 Max.   :59591409   Max.   :59591612 

《4》数据框的小标与子集的提取

数据框的下标的提取与矩阵基本相同。不同的是:对于列可以直接使用变量名提取。

Example:

提取单个元素(记住是中括号,不是小括号)

> foo[2,2]
[1] 14093753

提取一个子集,比如第1,3行,第2列。

> foo[c(1,3),2]
[1] 12445979 44885994

> foo[c(1,3),end]
错误于x[j] : 类别为'closure'的下标不对
> foo[c(1,3),c("end")] #用变量名提取这列。
[1] 12445979 44885994

数据框名¥变量名,提取一列(变量的值)

> foo$start
[1] 12445063 14092846 44885230 46103076 59591409
> foo[,1]
[1] 12445063 14092846 44885230 46103076 59591409

提取满足条件的子集

subset;

> subset(foo,end>mean(end))
     start      end
3 44885230 44885994
4 46103076 46103330
5 59591409 59591612

《5》数据框中添加新变量

基本方法:

> foo$sqrt_start <- sqrt(foo$start)
> foo
     start      end sqrt_start
1 12445063 12445979   3527.756
2 14092846 14093753   3754.044
3 44885230 44885994   6699.644
4 46103076 46103330   6789.925
5 59591409 59591612   7719.547

with()函数

> foo$sqrt_end <- with(foo,sqrt(end))
> foo
     start      end sqrt_start sqrt_end
1 12445063 12445979   3527.756 3527.886
2 14092846 14093753   3754.044 3754.165
3 44885230 44885994   6699.644 6699.701
4 46103076 46103330   6789.925 6789.943
5 59591409 59591612   7719.547 7719.560

transform()函数

> foo <- transform(foo, istart=1/start, iend=1/end)
> foo
     start      end sqrt_start sqrt_end       istart         iend
1 12445063 12445979   3527.756 3527.886 8.035315e-08 8.034724e-08
2 14092846 14093753   3754.044 3754.165 7.095799e-08 7.095342e-08
3 44885230 44885994   6699.644 6699.701 2.227904e-08 2.227866e-08
4 46103076 46103330   6789.925 6789.943 2.169053e-08 2.169041e-08
5 59591409 59591612   7719.547 7719.560 1.678094e-08 1.678089e-08

数据框怎么读,写,但是有个问题没有解决,就是删除,也许前面已经解决,所以,慢慢的就知道了,先备注上。

 

 

 

posted on 2012-11-19 19:49  半个馒头  阅读(1172)  评论(0编辑  收藏  举报

导航