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


71

我正在使用R,需要选择年龄(死亡年龄)小于或等于漆膜(泌乳期)的行。我试图创建一个新的数据框,使其仅包含行/ id,从而使“ 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 

新的数据框应如下所示:

dfnew:
id1   id2    laclen    aged
9830  64526    26       6 
7609  64547    28       0 
9925  64551     3       0 
9914  64551     3       2

任何帮助,将不胜感激!

巴宗


请提供有关您需要的更多详细信息。
卡提克

1
嗨,Karthik,我正在尝试创建一个新数据框,使其仅包含行/标识,从而使“ aged”列的值小于“ laclength”列的值
Bazon,2010年

Answers:


107
df[df$aged <= df$laclen, ] 

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


谢谢,aL3xa!我也会保留这个。我可以看到它与先前发送的一个wkmor1非常相似。
巴松

1
@ aL3xaattach否则detach可能很危险...而且我认为逗号放错了位置。
马雷克(Marek)2010年

1
@Marek,谢谢您的建议!我detach在右括号后添加了逗号,所以它是这样的:attach(df); newdf <- df[which(aged <= laclen), ]; detach(df)
aL3xa 2010年

1
@ aL3xa您也可以使用with-newdf <- df[with(df,which(aged <= laclen)), ]代替attach/detach
马立克

1
我收到错误消息:Error in Ops.factor(value, productcode) : level sets of factors are different,必须在这些字段上设置级别:stackoverflow.com/questions/24594981/…–
fraxture


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.