根据条件选择r中的特定行

时间:2014-10-14 17:30:12

标签: r

我在r中有一个名为“Tc”的表,其中包含各种数据,如下所示:

Tc[1:5,]
                tFirst             tSecond type
1  2013-05-21 23:19:56 2013-05-22 13:33:12    2
2  2013-05-22 13:33:12 2013-05-22 14:29:44    1
3  2013-05-22 14:29:44 2013-05-22 17:02:18    2
4  2013-05-22 17:02:18 2013-05-22 17:13:29    1
5  2013-05-22 17:13:29 2013-05-22 19:42:14    2

我在r中有另一个名为“Df”的数据集,对于Tc中的相同行包含TRUE或FALSE,如下所示:

Df
  [1] FALSE TRUE FALSE TRUE TRUE

如何在从Tc创建新表时应用Df,让我们称之为newTc,其中只显示与TRUE关联的行?所以使用我的newTc示例的预期输出将是:

newTc
                tFirst             tSecond type
2  2013-05-22 13:33:12 2013-05-22 14:29:44    1
4  2013-05-22 17:02:18 2013-05-22 17:13:29    1
5  2013-05-22 17:13:29 2013-05-22 19:42:14    2

Tc和Df包含大约700行,这些示例只是部分。

2 个答案:

答案 0 :(得分:1)

您的代码将是

newTc <- Tc[which(Df[1,] == TRUE),]    

答案 1 :(得分:1)

要为Tc矢量TRUE的{​​{1}}值的Df行进行子集,您只需执行

Tc[Df,]

根据您的示例,以下是我假设您的数据设置的方式:

> Tc <- read.table(h=T, text = "tFirst             tSecond type
  1  '2013-05-21 23:19:56' '2013-05-22 13:33:12'    2
  2  '2013-05-22 13:33:12' '2013-05-22 14:29:44'    1
  3  '2013-05-22 14:29:44' '2013-05-22 17:02:18'    2
  4  '2013-05-22 17:02:18' '2013-05-22 17:13:29'    1
  5  '2013-05-22 17:13:29' '2013-05-22 19:42:14'    2")
> Df <- c(FALSE, TRUE, FALSE, TRUE, TRUE)
> Tc[Df,]
#                tFirst             tSecond type
# 2 2013-05-22 13:33:12 2013-05-22 14:29:44    1
# 4 2013-05-22 17:02:18 2013-05-22 17:13:29    1
# 5 2013-05-22 17:13:29 2013-05-22 19:42:14    2