推荐几个用vue做的网站,安平网站建设找盛千,c2c模式的特点类似于现实商务世界中的跳蚤市场,网站推广方式大全R语言学习笔记9-数据过滤-分组-融合 数据过滤基础数据过滤条件筛选数据使用dplyr包进行数据操作select 函数filter 函数subset函数 数据分组使用split()进行数据分组使用dplyr包进行数据分组使用data.table包进行数据分组 数据融合使用merge()进行数据融合使用dplyr包进行数据融… R语言学习笔记9-数据过滤-分组-融合 数据过滤基础数据过滤条件筛选数据使用dplyr包进行数据操作select 函数filter 函数subset函数 数据分组使用split()进行数据分组使用dplyr包进行数据分组使用data.table包进行数据分组 数据融合使用merge()进行数据融合使用dplyr包进行数据融合使用data.table包进行数据融合 数据过滤
数据选择是指从数据结构如数据框、列表等中提取、筛选或操作数据的过程。从数据集中提取符合条件的行或列。这在数据分析和清洗过程中非常常见可以从大量数据中快速筛选出需要的部分R提供了包括基础的索引、逻辑条件、函数式编程方法等实现
基础数据过滤 使用方括号 [ ] 进行基本索引和切片 # 创建一个示例数据框
df - data.frame(name c(Alice, Bob, Charlie),age c(25, 30, 28),gender c(F, M, M),score c(88, 92, 85)
)# 选择整列数据
df$name # 选择名为name的列# 选择多列数据
df[, c(name, score)] # 选择名为name和score的列# 选择某行某列的数据
df[2, age] # 选择第2行、age列的数据# 切片选择多行多列数据
df[1:2, c(name, age)] # 选择第1行到第2行的name和age列的数据条件筛选数据 使用逻辑条件进行数据筛选 # 使用逻辑条件筛选数据
df[df$age 25, ] # 筛选年龄大于25岁的行数据# 多条件筛选
df[df$age 25 df$gender M, ] # 筛选年龄大于25岁且性别为男性的行数据使用dplyr包进行数据操作
# 加载 dplyr 包
library(dplyr)# 示例数据框
df - data.frame(name c(Alice, Bob, Charlie),age c(25, 30, 28),gender c(F, M, M),score c(88, 92, 85)
)# 使用 dplyr 筛选和操作数据
# 选择特定列
df_selected - df %%select(name, age)# 条件筛选
df_filtered - df %%filter(age 25)# 多条件筛选
df_multi_filter - df %%filter(age 25, gender M)# 按条件计算新列
df_calculated - df %%mutate(score_adjusted score * 1.1) # 添加一个新的列表示成绩调整后的值# 按组计算汇总统计
df_summary - df %%group_by(gender) %%summarise(mean_age mean(age), max_score max(score)) # 按性别计算平均年龄和最高分print(df_selected)
print(df_filtered)
print(df_multi_filter)
print(df_calculated)
print(df_summary)select 函数 select 函数用于选择数据框中的特定列。可按照列名或列索引来指定需要保留的列 # 创建一个示例数据框
df - data.frame(A c(1, 2, 3, 4, 5),B c(a, b, c, d, e),C c(TRUE, FALSE, TRUE, FALSE, TRUE)
)# 使用 select 函数选择列 A 和 C
library(dplyr)
selected_df - select(df, A, C)# 打印选择后的数据框
print(selected_df)输出 A C
1 1 TRUE
2 2 FALSE
3 3 TRUE
4 4 FALSE
5 5 TRUEfilter 函数 filter 函数用于根据指定的条件筛选数据框中的行 # 使用 filter 函数筛选符合条件的行
filtered_df - filter(df, A 2)# 打印筛选后的数据框
print(filtered_df)输出 A B C
1 3 c TRUE
2 4 d FALSE
3 5 e TRUEsubset函数 subset()函数可以根据行和列的逻辑条件从数据框中选择子集 # 使用 subset 函数筛选数据
# 筛选年龄大于25岁的行
filtered_df - subset(df, age 25)# 多条件筛选
filtered_df - subset(df, age 25 gender M)# 查看处理后的数据
print(filtered_df)输出结果name age gender score
2 Bob 30 M 92
3 Charlie 28 M 85数据分组
数据分组是指将数据集按照某个或多个变量的值进行划分以便对每个分组进行独立的分析或操作。数据分组在处理具有分类特征的数据集时特别有用可帮助我们理解不同类别或组别之间的数据特征和差异
使用split()进行数据分组 在基础R中可使用split()函数来根据某个变量的值将数据分组 # 创建一个示例数据框
df - data.frame(group c(A, B, A, B, A, B),value c(1, 2, 3, 4, 5, 6)
)# 使用split()函数按group列的值分组
grouped_data - split(df$value, df$group)# 查看分组结果
print(grouped_data)输出结果会显示两个分组A和B每个分组中包含对应的value值。
使用dplyr包进行数据分组 dplyr包是tidyverse系列包中的一个它提供了非常强大的数据处理功能包括数据分组。在dplyr中可使用group_by()函数来进行数据分组 # 加载dplyr包
library(dplyr)# 示例数据框同上
df - data.frame(group c(A, B, A, B, A, B),value c(1, 2, 3, 4, 5, 6)
)# 使用group_by()函数按group列的值分组
grouped_df - df %% group_by(group)# 查看分组结构不直接显示分组内容但可用于后续操作
str(grouped_df)# 对分组数据进行操作例如计算每组的平均值
summarized_df - grouped_df %% summarise(mean_value mean(value))# 查看操作结果
print(summarized_df)group_by()函数将数据按group列的值进行了分组但分组后的数据框grouped_df本身不会直接显示分组的内容。然而这个分组结构可以在后续的操作中使用例如在summarise()函数中计算每个分组的统计量
使用data.table包进行数据分组
# 加载data.table包
library(data.table)# 将数据框转换为data.table对象
dt - as.data.table(df)# 使用[, by]语法进行分组和操作
summarized_dt - dt[, .(mean_value mean(value)), by group]# 查看操作结果
print(summarized_dt)在data.table中使用[, by]的语法来进行分组操作。上面的代码计算了每个group的平均value值
数据融合
数据融合或称数据合并指的是将多个数据集按照某些条件或列进行连接以便进行综合分析或处理。常见的数据融合方式包括基于列连接merge、基于行连接bind、以及使用特定关系操作符如join等
使用merge()进行数据融合
# 创建示例数据框
df1 - data.frame(ID c(1, 2, 3),Name c(Alice, Bob, Charlie),Score1 c(85, 92, 78)
)df2 - data.frame(ID c(2, 3, 4),Score2 c(88, 95, 80)
)# 使用merge()函数按照ID列进行数据融合
merged_df - merge(df1, df2, by ID, all TRUE) # 使用all TRUE表示保留所有行# 查看融合后的数据
print(merged_df)merge()函数按照ID列将df1和df2进行连接结果包含了所有的ID并将两个数据框中的数据合并在一起
使用dplyr包进行数据融合 dplyr包提供了更为简洁和灵活的数据处理方式包括数据融合操作 # 加载dplyr包
library(dplyr)# 示例数据框同上
df1 - data.frame(ID c(1, 2, 3),Name c(Alice, Bob, Charlie),Score1 c(85, 92, 78)
)df2 - data.frame(ID c(2, 3, 4),Score2 c(88, 95, 80)
)# 使用dplyr的left_join()函数按照ID列进行左连接
merged_df - left_join(df1, df2, by ID)# 查看融合后的数据
print(merged_df)left_join()函数执行了按照ID列的左连接操作即保留了df1中所有的行并将df2中匹配的行数据合并到一起
使用data.table包进行数据融合 data.table是另一个效率高且功能强大的数据处理包特别适用于大型数据集的操作 # 加载data.table包
library(data.table)# 示例数据框同上
df1 - data.table(ID c(1, 2, 3),Name c(Alice, Bob, Charlie),Score1 c(85, 92, 78)
)df2 - data.table(ID c(2, 3, 4),Score2 c(88, 95, 80)
)# 使用data.table的merge()函数按照ID列进行数据融合
merged_dt - merge(df1, df2, by ID, all TRUE)# 查看融合后的数据
print(merged_dt)在data.table中merge()函数的用法与基础R中的merge类似但它在处理大数据时有更高的效率