如何使用IF语句而不是子集在R中运行查询?

如何使用IF语句而不是子集在R中运行查询?,r,if-statement,R,If Statement,我认为这是一个相当简单的问题——但我不太明白如何在不每次创建新子集的情况下在数据集的部分部分上编写代码 例如,如果我有一个名为数据集的数据集和一个名为性别的列,还有一个名为年龄的列,我只想对30岁以上的女性进行查询,我可以很容易地创建数据集的一个子集,通过编写以下内容可以很好地工作: female30plus <- subset(dataset,dataset$gender == "female" & dataset$age > 30) female30加30) 然后,我

我认为这是一个相当简单的问题——但我不太明白如何在不每次创建新子集的情况下在数据集的部分部分上编写代码

例如,如果我有一个名为
数据集
的数据集和一个名为
性别
的列,还有一个名为
年龄
的列,我只想对30岁以上的女性进行查询,我可以很容易地创建数据集的一个子集,通过编写以下内容可以很好地工作:

female30plus <- subset(dataset,dataset$gender == "female" & dataset$age > 30)
female30加30)
然后,我可以简单地使用
female30plus
,轻松地运行数字或绘制图形——但如果我不想创建
dataset
的一百万个子集,我可以想象有一种相当简单的方法,只需使用某种形式的
if
语句,就可以运行这些数字——尽管我尝试的大部分内容似乎都不起作用

谢谢你的帮助

--

答复:


答案在下面答案的注释中,但如果有人有相同的问题,如果您不想每次都创建子集,您应该使用
dataset[dataset$gender==“female”&dataset$age>30]
。谢谢大家

未经测试,但您应该能够处理类似的问题

dataset[dataset[,2] >= 30 & dataset[,1] == "female",]

如果在像
dataset[c(TRUE,false)]
这样的数据集中指定
TRUE
false
,它将只返回到达
TRUE
的数据。因此,您只需输入一个参数,然后仅当数据符合两个条件时才会返回
TRUE

您需要指定您考虑使用哪种类型的标准组合。男/女和什么样的年龄标准?并且不要在子集内的列名前面使用
dataset$
。它完全违背了函数的目的。@BondedDust抱歉——对我缺少的东西感到困惑。我不认为我需要发布一个数据集,因为这只是一个关于如何停止使用子集的问题。我的数据集目前只有199条,其中61条是女性,年龄从31岁到88岁不等(平均60岁)。还有什么有用的吗?不清楚你想要什么。我不认为使用
dataset[dataset[,2]>=30和dataset[,1]==“female”,]
比使用
subset(dataset,gender==“female”&age>30)有什么好处
。他们都在进行子设置操作,而且
子集
版本更清晰,输入更少。@BondedDust我只是想要不会强迫我创建一百万个子集的代码。我同意你的看法,我希望
dataset[dataset[,2]>=30&dataset[,1]==“female”,]
没有那么笨重,我希望有一种更简单的方法来做,而不被子集推翻,但如果现在我知道没有简单的
if-then
-type语句来编写它,我可能会继续使用子集。@BondedDust例如,我使用SQL多于R——对我来说,在R中为所有内容创建子集就像每次我想查看数据集的不同部分时都在SQL中创建新表一样,这是我永远不会做的。谢谢,这很有效!有两个问题可以帮助理解:(1)有没有办法不计算列数?例如,我的年龄列在第17列,性别列在第2列——有没有一种方法可以做到这一点而不必每次都查这个?(2)在您的示例中,如果在
dataset[x,2]
中的x中添加了一些内容,会发生什么情况?
dataset[c(TRUE,FALSE)]
将每隔一列返回一次。我建议等到发问者发布了足够的详细信息,才知道他真正想要什么。然后进行测试。@Ryan回答您的第一个问题,绝对是:如果名称是常量而不是列位置,则可以使用名称。所以,dataset[dataset$age>=30&dataset$gender==“female”,]@Ironholds谢谢
dataset[dataset$age>=30&dataset$gender==“female”,]
正是我想要的,因为现在我可以在不保存一百万子集的情况下在此数据上创建图表等。不过我知道,最后一个逗号是什么意思?为什么没有它就不能用?@Ryan:括号中的逗号分隔行和列-因此它只对30岁以上的女性和所有列使用行。可以通过在逗号后添加内容(例如列名或数字)来限制要考虑的列。