R - 如何从多个数据帧中对某些行进行子集化

时间:2018-01-29 16:09:56

标签: r dataframe subset multiple-tables

我确信这很容易,但我在搜索功能中找不到任何东西。

我的问题是: 我有3个不同的数据帧,并希望从每个数据帧中选择1个特殊行,并将这些行放在一个新的数据帧中。我怎么做?

以下是一个例子:

>df1
  Station     Date    Value
1 Station 1 20000608   5.0
2 Station 1 20000609  17.5
3 Station 2 20000610  30.0

>df2
  Station     Date    Value
1 Station 7 20010608     7
2 Station 5 20020609    14
3 Station 1 20060610    21

> df3
  Station     Date    Value
1 Station 5 20050608     2
2 Station 3 20020609     5
3 Station 2 20010610     8

###################
#Code
x1= c("Station 1", "Station 1", "Station 2")
x2= c("20000608", "20000609", "20000610")
x3= seq(5, 30, length=3)

df1 = data.frame(Station=x1, Date=x2, Value=x3) 

x1= c("Station 7", "Station 5", "Station 1")
x2= c("20010608", "20020609", "20060610")
x3= seq(7, 21, length=3)

df2 = data.frame(Station=x1, Date=x2, Value=x3) 

x1= c("Station 5", "Station 3", "Station 2")
x2= c("20050608", "20020609", "20010610")
x3= seq(2, 8, length=3)

df3 = data.frame(Station=x1, Date=x2, Value=x3) 

我想从df1中取出第2行,df2中的第1行和df3中的第1行。应在新数据框中添加所有3行。它最终应该是这样的:

>dfnew
  Station     Date    Value
2 Station 1 20000609  17.5
1 Station 7 20010608     7
1 Station 5 20050608     2

我当然知道

df1[2,], df2[1,], df3[1,] #or
df[ c(2,), (1,), (1,)]

但这仅适用于同一数据帧。如何使用多个数据帧?

1 个答案:

答案 0 :(得分:4)

您可以通过从所有数据框中选择所需的行,然后使用以下命令将它们绑定在一起来完成:

dfnew <- rbind(df1[2, ], df2[1, ], df3[1, ])

它会为您提供所需的输出:

   Station   Date      Value
2  Station 1 20000609  17.5
1  Station 7 20010608   7.0
11 Station 5 20050608   2.0