前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言第二章数据处理②选择行

R语言第二章数据处理②选择行

作者头像
用户1359560
发布2018-12-24 10:26:37
2.7K0
发布2018-12-24 10:26:37
举报
文章被收录于专栏:生信小驿站生信小驿站

正文

这篇博客主要介绍学习以下R函数:

slice():按位置提取行 filter():提取符合特定逻辑条件的行。 例如,iris%>%filter(Sepal.Length> 6)。 filter_all(),filter_if()和filter_at():过滤变量然后选择行。 这些函数复制所有变量或变量选择的逻辑标准。 sample_n():随机选择n行 sample_frac():随机选择一小部分行 top_n():选择变量排序的前n行

R语言常用的逻辑符号
代码语言:javascript
复制
<:少于
>:大于
<=:小于或等于
>=:大于或等于
==:相等
!=:不相等
%in%:在之内。 例如,“a in%c(2,3)”表示a可能等于2或3。
is.na():是NA
!is.na():不是NA。
 value == 2 | 3:表示值等于2或3。与value%c(2,3)相同
&:和。 例如,性别==“女性”&年龄> 25岁
根据属性值选择行
代码语言:javascript
复制
# 选择Sepal.Length > 7的行
my_data %>% filter(Sepal.Length > 7)
#选择Sepal.Length > 6.7, Sepal.Width <= 3的行
my_data %>% filter(Sepal.Length > 6.7, Sepal.Width <= 3)
#选择Sepal.Length > 6.7, Species == "versicolor"的行
my_data %>% filter(Sepal.Length > 6.7, Species == "versicolor")
#选择 Sepal.Length > 6.7,且Species == "versicolor"或者 Species == "virginica"的行

my_data %>% filter(
  Sepal.Length > 6.7, 
  Species == "versicolor" | Species == "virginica"
  )
#选择 Sepal.Length > 6.7,且Species == "versicolor"或者 Species == "virginica"的行
my_data %>% filter(
  Sepal.Length > 6.7, 
  Species %in% c("versicolor", "virginica" )
  )
过滤变量后选择行

通过删除分组列“Species”,从my_data创建一个新的演示数据集:

代码语言:javascript
复制
#去掉Species列
my_data2 <- my_data %>% select(-Species)
#选择所有属性大于2的行
my_data2 %>% filter_all(all_vars(.> 2))
#选择任何一个属性大于2的行
my_data2 %>% filter_all(any_vars(.> 2))
#选择以sep开头的属性任一大于2的行
my_data2 %>% filter_at(vars(starts_with("Sep")), any_vars(. > 2))
根据缺失值筛选行
代码语言:javascript
复制
friends_data <- data_frame(
  name = c("A", "B", "C"),
  age = c(27, 25, 29),
  height = c(180, NA, NA),
  married = c("yes", "yes", "no")
)

#选择height属性是NA的行
friends_data %>% filter(is.na(height))
#选择height属性非NA的行
friends_data %>% filter(!is.na(height))
从数据框中选择随机行

可以使用函数sample_n()选择n个随机行,也可以使用sample_frac()选择行的随机分数。 我们首先使用函数set.seed()来启动随机数生成器引擎。 这对于用户重现分析非常重要。

代码语言:javascript
复制
set.seed(1234)
#无放回的随机取五行
my_data %>% sample_n(5, replace = FALSE)
#无放回的随机取5%行
my_data %>% sample_frac(0.05, replace = FALSE)
#根据Sepal.Length值取最大的五行
my_data %>% top_n(5, Sepal.Length)
#根据Species分组,然后以Sepal.Length值取最高的五行
my_data %>% 
  group_by(Species) %>%
  top_n(5, Sepal.Length)

总结:

按逻辑条件筛选行:my_data%>%filter(Sepal.Length> 7) 选择n个随机行:my_data%>%sample_n(10) 选择行的随机分数:my_data%>%sample_frac(10) 按值选择前n行:my_data%>%top_n(10,Sepal.Length)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档