簡體   English   中英

在R中搜索數據框

[英]Searching a Data Frame in R

如何基於多個條件搜索data.frame 例如,我有一個data.frame其中包含DateTimeItemValue ,然后我想搜索data.frame ,其中我的Date = 1/2/2010Time = 5pm Date = 1/2/2010 Item = CarValue = 5 ,是否有一個函數可以讓我做到這一點? 更重要的是,如何獲得具有這些值的數據幀的行索引?

例如,假設所有這些值都在數據幀的第三行中,是否有一個函數會逐行搜索數據幀然后輸出索引為3的函數?

聽起來您對執行查詢有疑問。 如果您熟悉dplyr軟件包,則會發現諸如select功能可以提供幫助。 但是,僅使用basestats軟件包,您應該就能完成所需的工作。

例如,給定一個數據框,您應該提取與您的條件匹配的行索引。 您可以使用which函數來完成此任務:

indices <- which(data$Date == "1/2/2010" & data$Time == "5pm" & data$Item =="Car" & data$Value == 5)

那你就准備好子集化了

data_subset <- data[indices, ]

我希望上面的假設示例可以幫助您找到所需的答案。

您可以使用“哪個”作為以下代碼:

df <- data.frame(cbind(Date = '1/2/2010', Time = '5pm', Item = 'Car', Value = 50000))
new <- data.frame(cbind(Date = '1/3/2010', Time = '6am', Item = 'keys', Value = 100))
df <- rbind(df, new)

searchIndex1 <- function(dd, tt, itm, val){
which(df$Date==dd & df$Time== tt & df$Item ==itm & df$Value == val)
}
searchIndex1(dd='1/3/2010', tt='6am', itm='keys', val=100)

它將返回索引號2。

或者您可以使用“過濾器”:

searchIndex2 <- function(dd, tt, itm, val){
  df.with.index <- mutate(df, IDX = 1:n())
  result <- filter(df.with.index,(Date==dd & Time== tt & Item ==itm & Value == val))$IDX
}

searchIndex2(dd='1/2/2010', tt='5pm', itm='Car', val=50000)

它將返回索引1。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM