1. 合併數據庫
橫項合併: data3<- merge(data1,data2, by=c("V1"), all=T) //all=F則只保留能合併上的部分
縱向合併:data3 <- cbind(data1,data2) //橫向合併也可以用rbind
2. 變量重新命名
data1 <- rename(data1, c(oldname="newname")) //需要安裝reshape這個package
names(data1)[2:4] <- c("A1", "A2","A3") //把第2-4列的變量名改爲A1,A2,A3
3. 查重去重
unique(data1) //整個數據庫去重
data1[!duplicated(data1$height), ] //去除身高重複的值
或:
index <- duplicated(data1$height)
data2 <- data1[!index, ] //也是去除身高重複的值
4. 變量分組並創建新變量:
data1$birthcohort <- ifelse(data1$age<40, c("young"), c("old")) //生成新變量birthcohort,如果年齡小於40賦值young,否則賦值爲old
5. 讀取數據庫時去掉missing data, 或只讀取有完整數據的記錄
data1clean = na.omit(data1)
6. 數據分亞組
datafemale = data1[data1$sex == "female", ] //只讀取女性的數據
data35 =data1[data1$Age <35, ] //只讀取小於35歲的
7. 導出數據
例如,導出泰坦尼克數據庫中1等艙的人的數據
Titanic=read.csv("https://goo.gl/4Gqsnz") #從網絡讀取數據
class1 = titanicC[titanicC$Pclass==1,]
write.table(class1,file="titanic_class1.txt",sep="\t",quote=F) #txt文件,TAB分隔,不要引號
8. dplyr命令: 用%>%鏈接起來的pipeline
同樣是泰坦尼克數據,計算每個艙位等級的隨機20名女性的平均生存率,並按艙位等級降序排列
survive20randomfemales = titanicC %>% group_by(Pclass) %>% filter(Sex=="female") %>% sample_n(20) %>%
summarise(meansurvive=mean(Survived)) %>%
arrange(desc(Pclass))
9. 看變量中是否存在某個或某幾個單詞,用grepl命令
例如看川普text數據中是否存在america這個單詞
trump$america = grepl("america", trump$text,ignore.case = T) #ignorecase表示忽略大小寫
例如,看川普數據中出現過多少個以下單詞,並計算數量
A <- c("great","again","trump","loser","china")
for(i in A){
yesno=grepl(i, trump$text,ignore.case = T)
count=sum(yesno=="TRUE")
newdata[[i]]<- count #這樣會生成一個新dataframe,生成變量爲i,對應值是count
print(paste(i,count))
}
newdata = newdata[, -1]
#即可生成如下結果
[1] "great 148"
[1] "again 50"
[1] "trump 83"
[1] "loser 0"
[1] "china 14"
10. R 更新
install.packages("installr")
library("installr")
updateR()