1. 程式人生 > >[Rcode]資料框的基礎操作【不定期更新】

[Rcode]資料框的基礎操作【不定期更新】

一 資料的篩選與處理

1 新增新的一列,把連續型變數(如身高)轉化為類別型變數

data$height[data$height>=3]<-NA #把異常值重新編碼為缺失值
data<-within(data,{
             heightcat<-NA
             heightcat[height>1.8]<-"taller"
             heightcat[height>=1.6&height<=1.8]<-"middle"
             heightcat[height<1.6]<-"shorter"})              #建立一個類別型變數給身高資料歸類
                                                             #注意這裡heightcat只是一個字元型變數,而不是一個有序型因子
                                                             #注意within的用法,可以修改資料框

2 變數的重新命名

#method 1 
fix(data)   #互動修改
#method 2
names(data)[i]<-"newname"
#method 3
library(plyr)
rename(data,c(oldname="newname",oldname="newname"))

3 缺失值處理

is.na(data[,1:5]) #識別缺失值
na.omit(data) #移除所有含有缺失值的觀測(即刪除行)
#原始資料中a<=0,b<=0,c<=0則表示缺失,用於刪除含缺失值的行
data<-read.csv("d:/data.csv",header=T,sep=",")
attach(data)
index=a>0&b>0&c>0
data<-data[index,]

4 資料集取子集

newdata<-data[,6:10]                                                                #直接挑選變數
newdata<-data[c(-1,-2)]                                                             #刪除第一個和第二個變數,等價於data$var1<-data$var2<-NULL
# 選擇觀測
newdata<-data[1:3,]                                                                 #直接選擇行
newdata<-data[data$heightcat=="taller"&data$height>1.5,]                            #使用attach函式就不用加美金符號
#subsset函式
newdata<-subset(data,height>=1.7|height<1.5,select=c(height,heightcat))
newdata<-subset(data,heightcat=="taller",select=height:heightcat)