提取基于涉及场条件的数据帧的一个子集
题
我有从不同的位置的医学调查的结果(该位置是存在于数据因子)大的CSV。正如一些分析是具体到某个位置,为方便起见,我想提取只从这些位置的行子帧。它发生的位置是第一个字段,因此,是的,我可以通过排序CSV行做到这一点,但我想了解如何做到这一点的R作为我敢肯定,我需要这对于其他列。
因此,概括地说,问题是:给定的数据帧FOO,如何可以创建另一个数据帧杆,它仅包含从FOO中的行,其中foo$location = 'there'
解决方案
下面是两个主要的方法。我喜欢这个一个用于其可读性:
bar <- subset(foo, location == "there")
请注意,您可以串在一起&
和|
很多条件语句来创建复杂的子集。
第二个是转位的方法。在R中可以索引行与任一数字,或布尔片。 foo$location == "there"
返回T
和F
值的矢量,即相同的长度foo
的行。你可以做到这一点只返回行,其中的条件返回true。
foo[foo$location == "there", ]
其他提示
只是延长了答案上面,你还可以索引你的列,而不是指定的列名也可以根据你在做什么是有用的。鉴于您的位置是它看起来像这样的第一个字段:
bar <- foo[foo[ ,1] == "there", ]
这是有用的,因为你可以在你的列值进行操作,如循环在特定的列(你可以通过索引行号也做相同的)。
这也是有用的,如果需要在一个以上的列执行一些操作,因为可以再指定一个范围列组成:
foo[foo[ ,c(1:N)], ]
或特定的列,如你所愿。
foo[foo[ ,c(1,5,9)], ]
不隶属于 StackOverflow