为了账号安全,请及时绑定邮箱和手机立即绑定

根据逻辑条件过滤数据。

根据逻辑条件过滤数据。

达令说 2019-06-06 13:57:20
根据逻辑条件过滤数据。我想从data.frame基于逻辑条件。假设我有数据框架,就像   expr_value     cell_type1    5.345618 bj fibroblast2    5.195871 bj fibroblast3    5.247274 bj fibroblast4    5.929771          hesc5    5.873096          hesc6    5.665857          hesc7    6.791656          hips8    7.133673          hips9    7.574058          hips10   7.208041          hips11   7.402100          hips12   7.167792          hips13   7.156971          hips14   7.197543          hips15   7.035404          hips16   7.269474          hips17   6.715059          hips18   7.434339          hips19   6.997586          hips20   7.619770          hips21   7.490749          hips我想要的是获得一个新的数据框架,它看起来相同,但只有一个单元格类型的数据。例如:包含单元格类型“hESC”的子集/选择行:   expr_value     cell_type1    5.929771          hesc2    5.873096          hesc3    5.665857          hesc或者细胞型“Bj成纤维细胞”或“hESC”:   expr_value     cell_type1    5.345618 bj fibroblast2    5.195871 bj fibroblast3    5.247274 bj fibroblast4    5.929771          hesc5    5.873096          hesc6    5.665857          hesc有什么简单的方法吗?我试过:expr[expr[2] == 'hesc']# [1] "5.929771" "5.873096" "5.665857" "hesc"     "hesc"     "hesc"    如果原始数据框架被称为“Exr”,但是它以错误的格式给出了结果,正如您所看到的。
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

若要根据“cell_type”(例如“hESC”),使用==:

expr[expr$cell_type == "hesc", ]

根据两个或多个不同的“cell_type”(例如,“hESC”)选择行‘bj成纤维细胞’),使用%in%:

expr[expr$cell_type %in% c("hesc", "bj fibroblast"), ]


查看完整回答
反对 回复 2019-06-06
?
哔哔one

TA贡献1854条经验 获得超8个赞

使用subset(供互动使用)

subset(expr, cell_type == "hesc")subset(expr, cell_type %in% c("bj fibroblast", "hesc"))

或者更好dplyr::filter()

filter(expr, cell_type %in% c("bj fibroblast", "hesc"))


查看完整回答
反对 回复 2019-06-06
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

原因expr[expr[2] == 'hesc']对一个数据框架来说是行不通的,x[y]选择列,而不是行。如果要选择行,请更改为语法。x[y,]相反:

> expr[expr[2] == 'hesc',]
  expr_value cell_type4   5.929771      hesc5   5.873096      hesc6   5.665857      hesc


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 682 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信