[英]r - Minimum in Vector Based on Multiple Conditions
我想添加一列Min/NotMin
,以標識ORG NAME
, Inquiry
和ARNR
列的最小LCP
。 除非是唯一的選擇,否則應排除0和NA。
例如,它應如下所示:
ORG NAME Inquiry ARNR Quantity LCP COGS Min/NotMin
BCA 22245 1001167 304 31.621 96.12784 NotMin
BCA 22245 1001167 304 37.675 114.532 NotMin
BCA 22245 1001167 304 0 0 NotMin
BCA 22245 1001167 304 NA 0 NotMin
BCA 22245 1001167 304 0 0 NotMin
BCA 22245 1001167 304 144.915 440.5416 NotMin
BCA 22245 1001167 304 NA 0 NotMin
BCA 22245 1001167 304 NA 0 NotMin
BCA 22245 1001167 304 39.381 119.71824 NotMin
BCA 22245 1001167 304 27.014 82.12256 Min
BIP 22188 1003771 100 1.394 1.394 NotMin
BIP 21729 1004077 236278 0 0 NotMin
BIP 21729 1004077 236278 NA 0 NotMin
BIP 21729 1004077 236278 1.52 3591.4256 NotMin
BIP 21729 1004077 236278 0 0 NotMin
BIP 21729 1004077 236278 NA 0 NotMin
BIP 21729 1004077 236278 3.848 9091.97744 NotMin
BIP 21729 1004077 236278 0.713 1684.66214 Min
BIP 21729 1004077 236278 1.837 4340.42686 NotMin
BIP 21729 1004077 236278 0 0 NotMin
BCA 21777 1004271 3000 3.057 91.71 Min
BCA 21777 1004271 3000 0 0 NotMin
BCA 21777 1004271 3000 3.848 115.44 NotMin
BIP 21981 1004387 100 0 0 Min
BCA 22204 1008463 125000 12.636 15795 NotMin
BCA 22204 1008463 125000 8.67 10837.5 Min
BCA 21732 1008463 125000 13.321 16651.25 NotMin
BCA 21732 1008463 125000 0 0 NotMin
BCA 21732 1008463 125000 8.034 10042.5 Min
BCA 21732 1008463 125000 NA 0 NotMin
希望能對您有所幫助! 謝謝!
這是一個解決方案。 我用data.table
和which
功能來做到這一點。
# Assuming DF is your input data frame
# Replace 0 with NA since you would like to exclude 0's
DF$LCP[DF$LCP == 0] <- NA
# Creating a Min/NotMin column with default value 'NotMin'
DF$MinOrNotMin <- "NotMin"
# Getting minimum by ORG NAME, Inquiry, ARNR and their index
library(data.table)
DT <- data.table(DF)
MinDF <- DT[, .SD[which.min(LCP),], by = list(ORG_NAME, Inquiry, ARNR)]
index_DF <- which( outer(DF$ORG_NAME, MinDF$ORG_NAME, "==") &
outer(DF$Inquiry, MinDF$Inquiry, "==") &
outer(DF$ARNR, MinDF$ARNR, "==") & outer(DF$LCP, MinDF$LCP, "==") ,
arr.ind=TRUE)
# Writing "Min" in Min/NotMin column for minimum value
DF$MinOrNotMin[index_DF[,1]] <- "Min"
## Your final Output
## DF
ORG_NAME Inquiry ARNR Quantity LCP COGS MinOrNotMin
BCA 22245 1001167 304 31.621 96.12784 NotMin
BCA 22245 1001167 304 37.675 114.53200 NotMin
BCA 22245 1001167 304 NA 0.00000 NotMin
BCA 22245 1001167 304 NA 0.00000 NotMin
BCA 22245 1001167 304 NA 0.00000 NotMin
BCA 22245 1001167 304 144.915 440.54160 NotMin
BCA 22245 1001167 304 NA 0.00000 NotMin
BCA 22245 1001167 304 NA 0.00000 NotMin
BCA 22245 1001167 304 39.381 119.71824 NotMin
BCA 22245 1001167 304 27.014 82.12256 Min
BIP 22188 1003771 100 1.394 1.39400 Min
BIP 21729 1004077 236278 NA 0.00000 NotMin
BIP 21729 1004077 236278 NA 0.00000 NotMin
BIP 21729 1004077 236278 1.520 3591.42560 NotMin
BIP 21729 1004077 236278 NA 0.00000 NotMin
BIP 21729 1004077 236278 NA 0.00000 NotMin
BIP 21729 1004077 236278 3.848 9091.97744 NotMin
BIP 21729 1004077 236278 0.713 1684.66214 Min
BIP 21729 1004077 236278 1.837 4340.42686 NotMin
BIP 21729 1004077 236278 NA 0.00000 NotMin
BCA 21777 1004271 3000 3.057 91.71000 Min
BCA 21777 1004271 3000 NA 0.00000 NotMin
BCA 21777 1004271 3000 3.848 115.44000 NotMin
BIP 21981 1004387 100 NA 0.00000 NotMin
BCA 22204 1008463 125000 12.636 15795.00000 NotMin
BCA 22204 1008463 125000 8.670 10837.50000 Min
BCA 21732 1008463 125000 13.321 16651.25000 NotMin
BCA 21732 1008463 125000 NA 0.00000 NotMin
BCA 21732 1008463 125000 8.034 10042.50000 Min
BCA 21732 1008463 125000 NA 0.00000 NotMin
PS您的第12行BIP 22188 1003771 100 1.394 1.394 NotMin
必須最小,因為ORG NAME
, Inquiry
和ARNR
列只有一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.