利用R语言进行基本数据管理

####创建leadership数据框
manager <- c(1, 2, 3, 4, 5)
date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")
country <- c("US", "US", "UK", "UK", "UK")
gender <- c("M", "F", "F", "M", "F")
age <- c(32, 45, 25, 39, 99)
q1 <- c(5, 3, 3, 3, 2)
q2 <- c(4, 5, 5, 3, 2)
q3 <- c(5, 2, 5, 4, 1)
q4 <- c(5, 5, 5, NA, 2)
q5 <- c(5, 5, 2, NA, 1)
leadership <- data.frame(manager, date, country, gender, age,
                         q1, q2, q3, q4, q5,stringsAsFactors = FALSE)

####创建新变量
my_data <- data.frame(x1 = c(2, 2, 6, 4),
                      x2 = c(3, 4, 2, 8))
my_data <- transform(my_data,
                     sum_x = x1 + x2,
                     mean_x = (x1 + x2)/2)
my_data


####变量的重编码
leadership
leadership$age[leadership$age == 99] <- NA
leadership$age[leadership$age >  75] <- "Elder"
leadership$age[leadership$age >= 55 &
               leadership$age <= 75] <- "Middle Aged"
leadership$age[leadership$age < 55] <- "Young"
#等价于
leadership <- within(leadership, {
  agecat <- NA
  agecat[age > 75]                        <- "Eleder"
  agecat[age >= 55 & age <= 75]           <- "Middle Age"
  agecat[age < 55]                        <- "Young"
})


####变量的重命名
names(leadership)
names(leadership)[2] <- "test_date"


####缺失值
is.na(leadership[,c(6:10)])
#排除缺失值
x <- c(1, 2, NA, 3)
y <- sum(x,na.rm = TRUE)
(new_data <- na.omit(leadership))


####日期值
str_date <- c("01/05/1965", "08/16/1975")
(dates <- as.Date(str_date, "%m/%d/%Y"))
#计算时间间隔
today  <- Sys.Date()
dob <- as.Date("1990-8-30")
difftime(today, dob, units = "days")


####类型转换
a <- c(1, 2, 3)
is.numeric(a)
is.character(a)
is.vector(a)
is.matrix(a)
is.data.frame(a)
is.factor(a)
is.logical(a)


####数据排序
with(leadership, {
  new_data <- leadership[order(gender, -q1),]
  print(new_data)
})


####数据集的合并
#向数据框添加列
total <- merge(dataframe1,dataframe2, by=c("ID", "country"))
#向数据框中添加行
total <-  rbind(dataframe1, dataframe2)


####数据集取子集
#选入变量
my_vars <- c("q1", "q2")
(new_data <- leadership[my_vars])
#剔除变量
my_vars <- names(leadership) %in% c("q3", "q4")
(new_data <- leadership[!my_vars])
#最好的方法——subset()
new_data <- subset(leadership, age >= 35 | age < 24,
                   select = c(q1,q2))
new_data
#随机抽样
(my_sample <- leadership[sample(1:nrow(leadership), 3, replace = FALSE),])


####使用SQL语句操作数据框
library(sqldf)
(new_df <- sqldf("select * from mtcars where carb=1 order by mpg",
                 row.names=TRUE))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值