如果特定列中的值小于其他列中的值,则仅选择行

Baz*_*zon 57 select r rows

我正在使用R并且需要选择年龄(死亡年龄)小于或等于laclen(哺乳期长度)的行.我试图创建一个新的数据框,只包含行/ ids,其中column'aged'的值小于其对应的'laclength'值.

df:
 id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9922  64551     3       5 
9916  64551     3       8 
9917  64551     3       8 
9914  64551     3       2 
Run Code Online (Sandbox Code Playgroud)

新数据框应如下所示:

dfnew:
id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9914  64551     3       2
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

Bazon

wkm*_*or1 93

df[df$aged <= df$laclen, ] 
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.方括号允许您基于逻辑表达式进行索引.


Jon*_*ang 48

你也可以

subset(df, aged <= laclen)
Run Code Online (Sandbox Code Playgroud)

  • `subset()`有一些严重的问题,比如http://stackoverflow.com/questions/9860090/in-r-why-is-better-than-subset (2认同)

Enr*_*ero 8

如果您使用dplyr包,您可以:

library(dplyr)
filter(df, aged <= laclen)
Run Code Online (Sandbox Code Playgroud)