如何通过在R中定义一个函数来获得给定多个列值的行?

时间:2016-08-18 11:53:50

标签: r dataframe

    Longitude Latitude     TWC
1      130.5    -16.5     6.935
2      131.5    -16.5    13.912
3      132.5    -16.5    13.244
4      133.5    -16.5    15.556
5      134.5    -16.5    21.380
6      135.5    -16.5    22.267
7      136.5    -16.5    17.398
8      137.5    -16.5    18.570
9      138.5    -16.5 32767.000
10     139.5    -16.5 32767.000
11     140.5    -16.5 32767.000
12     130.5    -16.5    12.854
13     131.5    -16.5    18.449
14     132.5    -16.5    21.339
15     133.5    -16.5    26.097
16     134.5    -16.5    31.306
17     135.5    -16.5    28.225
18     136.5    -16.5    25.373
19     137.5    -16.5    29.772
20     138.5    -16.5 32767.000
21     139.5    -16.5 32767.000
22     140.5    -16.5 32767.000

我有一个像这样的数据帧(更长)我希望获得相同的“经度”和“纬度”值,然后打印这些行。

此代码可以帮助我

data1 <- data[data$Longitude == '130.5' & data$Latitude =='-16.5',]
  Longitude Latitude    TWC
1      130.5    -16.5  6.935
12     130.5    -16.5 12.854

但是我正在寻找一个函数,我可以轻松地编写这两个变量(经度,纬度)来获得具有“TWC”值的这些行。

1 个答案:

答案 0 :(得分:0)

我们可以用数据集对象('dat')编写一个函数,各自的列('Lat','Long')和要比较的值('valuelat','valueLong'))

f1 <- function(dat, Lat, Long, valueLat, valueLong){
          dat[dat[[Lat]]==valueLat & dat[[Long]] == valueLong,]
   }

f1(data, "Latitude", "Longitude",  -16.5, 130.5)
#   Longitude Latitude    TWC
#1      130.5    -16.5  6.935
#12     130.5    -16.5 12.854

如果我们使用相同的数据集,那么我们可以从函数和函数内部删除'dat'和列名参数,我们可以将'dat'更改为'data'。

f2 <- function(valueLat, valueLong){
           data[data[["Latitude"]]==valueLat & data[["Longitude"]] == valueLong,]
   }

 f2(-16.5, 130.5)
 #   Longitude Latitude    TWC
 #1      130.5    -16.5  6.935
 #12     130.5    -16.5 12.854