[英]Searching a Data Frame in R
如何基於多個條件搜索data.frame
? 例如,我有一個data.frame
其中包含Date
, Time
, Item
, Value
,然后我想搜索data.frame
,其中我的Date = 1/2/2010
, Time = 5pm
Date = 1/2/2010
Item = Car
, Value = 5
,是否有一個函數可以讓我做到這一點? 更重要的是,如何獲得具有這些值的數據幀的行索引?
例如,假設所有這些值都在數據幀的第三行中,是否有一個函數會逐行搜索數據幀然后輸出索引為3的函數?
聽起來您對執行查詢有疑問。 如果您熟悉dplyr
軟件包,則會發現諸如select
功能可以提供幫助。 但是,僅使用base
和stats
軟件包,您應該就能完成所需的工作。
例如,給定一個數據框,您應該提取與您的條件匹配的行索引。 您可以使用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.