我有从不同的位置的医学调查的结果(该位置是存在于数据因子)大的CSV。正如一些分析是具体到某个位置,为方便起见,我想提取只从这些位置的行子帧。它发生的位置是第一个字段,因此,是的,我可以通过排序CSV行做到这一点,但我想了解如何做到这一点的R作为我敢肯定,我需要这对于其他列。

因此,概括地说,问题是:给定的数据帧FOO,如何可以创建另一个数据帧杆,它仅包含从FOO中的行,其中foo$location = 'there'

有帮助吗?

解决方案

下面是两个主要的方法。我喜欢这个一个用于其可读性:

bar <- subset(foo, location == "there")

请注意,您可以串在一起&|很多条件语句来创建复杂的子集。

第二个是转位的方法。在R中可以索引行与任一数字,或布尔片。 foo$location == "there"返回TF值的矢量,即相同的长度foo的行。你可以做到这一点只返回行,其中的条件返回true。

foo[foo$location == "there", ]

其他提示

只是延长了答案上面,你还可以索引你的列,而不是指定的列名也可以根据你在做什么是有用的。鉴于您的位置是它看起来像这样的第一个字段:

    bar <- foo[foo[ ,1] == "there", ]

这是有用的,因为你可以在你的列值进行操作,如循环在特定的列(你可以通过索引行号也做相同的)。

这也是有用的,如果需要在一个以上的列执行一些操作,因为可以再指定一个范围列组成:

    foo[foo[ ,c(1:N)], ]

或特定的列,如你所愿。

    foo[foo[ ,c(1,5,9)], ]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top