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")
newdata = data.frame(NA) #生成一个新的dataframe 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()
