我擁有包含原始數字和百分比列的數據集;有些百分比最終超過了100.我想使用ifelse語句將大於100的任何數字轉換爲100.但是,我只希望將ifelse語句應用於包含字母「PCT」的列他們的名字。基於列名在多個列上使用ifelse語句
下面是一個例子:
a <- c(4,6,1210,20, 603, 50)
b <- c(50,60,10,400,311, 40)
bubba <- data.frame(A_NUM=a,
A_PCT=b)
我想最終的格式爲:
a <- c(4,6,1210,20, 603, 50)
b <- c(50,60,10,100,100, 40)
bubba_fixed <- data.frame(A_NUM=a,
A_PCT=b)
我已經得到最接近的是這樣的:
bubba <- bubba [ , grepl("PCT" , names(bubba)) ]
bubba <- as.data.frame(lapply(bubba, function(x) ifelse(x > 100, 100, x)))
而且然後將其綁定回原始數據集。
感謝您的幫助!
五月值得澄清爲什麼這樣更好:'pmin(x,y)'是計算'ifelse(x> y,y,x)'更有效的方法',並且它還使您不必每次寫入兩次。 – Frank