一、创建数据框架
数据框架是 R 语言中一个非常重要的概念,它是一种类似于表格的数据结构,其中每一列可以是不同的数据类型,但是每一行必须是相同的长度。
创建一个数据框架最基本的方法就是使用 data.frame() 函数,我们可以用该函数来同时创建多个向量,并将它们组合成一个数据框架。以下是创建一个基本的数据框架的代码示例:
name <- c("Alice", "Bob", "Cathy", "David")
age <- c(25, 30, 35, 40)
gender <- c("F", "M", "F", "M")
df <- data.frame(name, age, gender)
在这个例子中,我们创建了一个包含姓名、年龄和性别的数据框架,其中每一列都是一个向量。可以使用 is.data.frame() 函数来检查这个对象是否为数据框架。
is.data.frame(df) #TRUE
二、数据框架操作
数据框架的操作包括增删查改,以下分别进行详细讲解:
1.增加
数据框架的列可以通过新建一个向量并用 cbind() 函数添加到数据框架中,如下所示:
city <- c("Beijing", "Shanghai", "Guangzhou", "Shenzhen")
df <- cbind(df, city)
这样,我们就将一个包含城市信息的向量添加到了数据框架中。还可以使用 rbind() 函数来添加新的行:
new_row <- c("Eric", 45, "M", "Hangzhou")
df <- rbind(df, new_row)
这个方法将一个新的向量作为行添加到了数据框架的末尾。
2.删除
可以使用 $ 运算符或者 [,] 运算符来删除数据框架中的列,如下所示:
df$city <- NULL #删除列
df <- df[-4,] #删除行
这里我们使用了 $ 运算符来删除了城市这一列,使用了 [-4,] 运算符来删除了第四行。
3.查找
我们可以使用 $ 运算符来访问数据框架中的每一列,也可以使用 [,] 运算符来查找特定的行和列,如下所示:
df$name #查找 name 列
df[2,] #查找第二行
df[,c("age", "gender")] #查找 age 和 gender 列
这里我们使用 [,] 运算符来查找了第二行和 age、gender 两列。
4.修改
我们可以通过 $ 运算符或者 [,] 运算符来修改数据框架中的数据,如下所示:
df$name[1] <- "Annie" #修改 name 列的第一个元素
df[1,"age"] <- 26 #修改第一行的 age 列
这里我们使用 $ 运算符来修改了第一个元素,使用 [,] 运算符来修改了第一行的 age 列。
三、数据框架处理
数据框架在实际的数据分析中使用得非常频繁,我们常常需要对数据框架进行各种各样的处理。
1.排序
我们可以使用 order() 函数对数据框架中的某一列进行排序,如下所示:
df <- df[order(df$age),] #按照 age 升序排序
df <- df[order(df$age, decreasing = TRUE),] #按照 age 降序排序
这里我们使用 order() 函数来对数据框架按照 age 列进行升序和降序排序。
2.过滤
我们可以使用逻辑运算符来对数据框架进行过滤,如下所示:
df[df$age > 30,] #过滤出 age 大于 30 的行
df[df$gender == "F" & df$age < 35,] #过滤出 gender 为 "F" 且 age 小于 35 的行
这里我们使用了逻辑运算符来筛选出 age 大于 30 和 gender 为 “F” 且 age 小于 35 的行。
3.聚合
我们可以使用 dplyr 包提供的函数对数据框架进行聚合处理,如下所示:
library(dplyr)
df %>% group_by(gender) %>% summarise(mean_age = mean(age), max_age = max(age)) #按照 gender 列进行聚合
这里我们使用了 dplyr 包提供的函数来对数据框架按照 gender 列进行聚合,计算了每个性别的平均年龄和最大年龄。
4.绘图
我们可以使用 ggplot2 包提供的函数来对数据框架进行图形化展示,如下所示:
library(ggplot2)
ggplot(df, aes(x=age, y=name, color=gender)) + geom_point() #按照 age 列和 name 列作为横纵轴,gender 列作为颜色绘制散点图
这里我们使用了 ggplot2 包提供的函数来对数据框架绘制散点图,并按照 gender 列的值进行了着色。
原创文章,作者:THDRI,如若转载,请注明出处:https://www.506064.com/n/334701.html