过滤数据框

Bob*_*Bob 11 select r filter

我已经在矩阵形式的csv文件中读取(有m行和n列).我想通过以口头形式进行过滤来过滤矩阵:

从列x中选择所有值,其中此行中另一列的值等于"blabla".

它就像数据库中的select语句,我说我对矩阵的一个子集感兴趣,需要满足这些约束.

我怎么能在r?我将数据作为数据帧,并可以通过标题访问它.data["column_values" = "15"]不会给我回到名为column_values的列只有值15的行.

谢谢

42-*_*42- 15

你说你只想要列x值为15的列x,对吧?

subset(dat, column_values==15, select=x)
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一个数据帧,因此你可能需要取消列表()它甚至可能"解构"它.

> dat
  Subject Product
1       1   ProdA
2       1   ProdB
3       1   ProdC
4       2   ProdB
5       2   ProdC
6       2   ProdD
7       3   ProdA
8       3   ProdB
> subset(dat, Subject==2, Product)
  Product
4   ProdB
5   ProdC
6   ProdD
> unlist( subset(dat, Subject==2, Product) )
Product1 Product2 Product3 
   ProdB    ProdC    ProdD 
Levels: ProdA ProdB ProdC ProdD
> as.character( unlist( subset(dat, Subject==2, Product) ) )
[1] "ProdB" "ProdC" "ProdD"
Run Code Online (Sandbox Code Playgroud)

如果你想要所有列,你可以删除第三个参数(select =参数):

subset(dat, Subject==2 )

  Subject Product
4       2   ProdB
5       2   ProdC
6       2   ProdD
Run Code Online (Sandbox Code Playgroud)


小智 9

假设这dat是有问题的数据框,col是列的名称,并且"value"是您想要的值,您可以这样做

dat[dat$col=="value",]

这获取所有的行dat对于这dat$col=="value",和列的所有.

  • 哎呀,抱歉,试试`data [data $ V1 =="stochastic"&data $ V6 =="independent",]`.我一直忘记R,与地球上几乎所有其他语言不同,使用"&"来表示大多数其他语言的含义`&&`(http://sites.stat.psu.edu/~dhunter/R/html/碱/ HTML/Logic.html). (2认同)